Генерация `docx` с использованием Interop не работает на завершающем RDC - PullRequest
3 голосов
/ 12 марта 2019

У меня есть веб-приложение ASP.Net Framework, которое пытается создать файл .docx (или .pdf) из счета.

На моем локальном компьютере, в то время как в среде разработки, код отлично работает.

Но на производственном сервере у меня возникла проблема с доступом к IIS_Users к «Документу Microsoft Word 97 - 2003».

Я исправляю эту проблему, применяя принятый ответ на следующий вопрос.

Доступ к объектной модели Office Word через asp.net

Но теперь, когда я закрываю подключение к удаленному рабочему столу и пытаюсь получить файл с веб-сайта, я получаю ошибку 500 с сервера, и при повторном удалении на сервер я могу загрузить файл, и мой код отлично работает на рабочем сервере.

Другими словами, когда RDP отключен, IIS не может получить доступ к «документу Microsoft Word 97 - 2003».

Я думаю, что закрытие RDP приводит к выходу пользователей из системы, и поэтому IIS_Users не может получить доступ к «документу Microsoft Word 97 - 2003».

Я также гуглил это и не нашел способа исправить это. Можно ли разрешить пользователю оставаться в системе даже после закрытия удаленного соединения?

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Используйте библиотеку DocX, не взаимодействуйте:

NuGet:

Install-Package DocX -Version 1.3.0 

GitHub: https://github.com/xceedsoftware/docx

1 голос
/ 12 марта 2019

при использовании COM для взаимодействия с документом Word вы фактически взаимодействуете с рабочим столом

после Windows 2008 служба Windows больше не поддерживает взаимодействие с рабочим столом, и iis также работает внутри svcHost, обратитесь к: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc756339(v=ws.10)

, поэтому вы можете заставить его работать, пока RDP к вашему серверу, но не удалось запустить код после отключения от RDP

Отредактировано, ссылка Предоставлено LexЛи описал более подробно.

...