2010-02-02 4 views
0

Я использую следующий фрагмент кода, чтобы открыть локальный файл docx, и он отлично работает, когда я нажимаю Ctrl + F5 в Visual Studio. Я просто нажимаю кнопку, и Word2007 на моей машине открывается, и там отображается docx. Но после публикации приложения на производственном сервере это не сработало. После того, как я нажму на ту же кнопку, ничего не произошло. Может ли кто-нибудь сказать мне, почему?Открытый документ Word из приложения ASP.NET

Я хочу, чтобы открыть локальный хранимый файл docx в Word 2007 из стороны приложения asp.net. Я не хочу использовать офисный COM-объект.

Мой код:

ProcessStartInfo psi = new ProcessStartInfo(@"winword.exe",@"/test.docx"); 
    Process.Start(psi); 

Большое спасибо.

+0

Зачем вам нужно открыть winword.exe? читать содержимое файла? –

ответ

3

Ваш код пытается открыть Word на сервере, а не на клиенте. Единственная причина, по которой он работает в процессе разработки, - это клиент и сервер на одной машине.

Вы не можете открыть Word на клиенте из-за ограничений безопасности браузера. Однако, если вы предоставите ссылку на файл, пользователь сможет загрузить и открыть файл, если у него установлен Word.

0

Проверьте, существует ли файл в том же месте.

ProcessStartInfo psi = new ProcessStartInfo() работает на сервере и пытается выбрать файл из местоположения сервера и никогда не может запускать файл на стороне клиента.

+0

Это не только попытка выбрать файл с сервера, он запускает Word * на сервере *. –

0

Единственное, что вы можете сделать, это загрузить файл. Если у них нет офиса или нет подходящего пакета совместимости, они не смогут его открыть.

1

Если вы хотите открыть локальный сохраненный документ, на машине клиента вы должны создать ссылку на документ (используя путь на жестком диске клиента). Браузер попросит у пользователя разрешения открыть его, но это должно сработать.

Причина, по которой работал ваш код, заключалась в том, что сервер и клиент - это один и тот же компьютер при отладке. Сервер разработки работает даже с вашим профилем.

В производстве сервер может находиться на другой стороне света. Код C#, который вы показываете в своем фрагменте, выполняется на сервере.

Смежные вопросы