У меня есть приложение веб-форм ASP.NET 4.5, работающее на IIS 7.5. Я создал страницу, на которой пользователь вводит некоторую информацию и выбирает некоторые вещи. Внизу страницы у меня есть кнопка, которая создает текстовый документ.
Как ?
Я использую библиотеку объектов Microsoft Word и загрузил шаблон документа Word. В нем я добавил поля MergeField, на которые ссылаюсь в коде, и инициализировал их. Это отлично работает локально. Когда я загрузил приложение на сервер... большой сюрприз:
Ошибка сервера в приложении '/' Не удалось получить фабрику классов COM для компонента с CLSID {000209FF-0000-0000-C000-000000000046} из-за следующей ошибки: 80070005 Отказано в доступе. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)).
ASP.NET не авторизован для доступа к запрошенному ресурсу. Рассмотрите возможность предоставления прав доступа к ресурсу удостоверению запроса ASP.NET. ASP.NET имеет базовое удостоверение процесса (обычно {MACHINE}\ASPNET в IIS 5 или Network Service в IIS 6 и IIS 7, а также настроенное удостоверение пула приложений в IIS 7.5), которое используется, если приложение не олицетворяет. Если приложение олицетворяет через , идентификатором будет анонимный пользователь (обычно IUSR_MACHINENAME) или аутентифицированный пользователь запроса.
Чтобы предоставить ASP.NET доступ к файлу, щелкните файл правой кнопкой мыши в проводнике, выберите «Свойства» и перейдите на вкладку «Безопасность». Нажмите «Добавить», чтобы добавить соответствующего пользователя или группу. Выделите учетную запись ASP.NET и установите флажки для требуемого доступа.
Странно то, что у меня есть еще несколько файлов в папке, куда я загрузил этот шаблон документа Word. Они отлично работают внутри одного и того же приложения. Я использую несколько шаблонов Excel. Это явно связано с отсутствием доступа, но почему и как я могу это исправить?
Я попытался следовать инструкциям и щелкнул правой кнопкой мыши, чтобы увидеть свойства безопасности. В нем уже добавлены группы и назначены полные права. Почему он не может получить к нему доступ? Было бы неплохо упомянуть здесь, что я использую олицетворение.
Я действительно хотел бы знать, есть ли способ исправить это или мне нужно написать весь код обработки слов, используя другую библиотеку?
Спасибо!
Microsoft.Office.Interop
в серверной среде (например, IIS) не поддерживается корпорацией Майкрософт и также очень подвержено ошибкам. Возможно, обратите внимание на альтернативные библиотеки, такие какOpenXML
(или другие библиотеки на ее основе), которые работают с файлами напрямую, а не автоматизируют настольное приложение Office. Для получения дополнительной информации перейдите по следующей ссылке поддержки от Microsoft: support.microsoft.com/en-us/help/257757/ - person bassfader   schedule 22.09.2017