Поскольку Word Interop фактически работает за кулисами, как если бы он работал в интерактивном сеансе, требуются определенные разрешения для учетной записи, используемой во время выполнения.
Используете ли вы аутентификацию и олицетворение Windows в своем веб-приложении?Если это так, то пользователь, выдающий себя за него, должен иметь права локального входа в систему на сервере для запуска Word ... Кроме того, необходимо фактически войти на сервер с этой учетной записью хотя бы один раз, чтобы на этом компьютере для этого пользователя существовал профиль.поэтому куст реестра можно загрузить.Я также обнаружил, что вам может потребоваться запустить Word хотя бы один раз от имени этого пользователя (чтобы убедиться, что все сообщения об инициализации впервые обрабатываются, прежде чем запускать Word из кода).
Если нетзатем служебная учетная запись, под которой работает приложение (обычно NETWORK SERVICE), требует вышеупомянутых разрешений (которые я опишу в ближайшее время), и вам придется делать что-то необычное, например динамическую загрузку куста реестра во время выполнения.Лично я предпочитаю реализовать временную олицетворение в коде с учетной записью пользователя, имеющей локальные разрешения на вход в систему на рассматриваемом сервере.
Локальный вход в систему может быть немного сложным в зависимости от конфигурации вашей сети и групповой политики(если вы хотите быть в некоторой степени безопасным, а не просто использовать учетную запись администратора домена).
Причина, по которой все работает на вашем компьютере, работающем в VS, заключается в том, что контекст веб-приложения - это ВАША учетная запись пользователя - которая, изКонечно, имеет локальные разрешения на вход в систему на вашем компьютере с кустом реестра, который можно загрузить.
Теперь для разрешений:
Сначала вы должны запустить "dcomcnfg"на сервере и внесите следующее изменение конфигурации:
- Щелкните правой кнопкой мыши Службы компонентов \ Компьютеры \ Мой компьютер \ Конфигурация DCOM \ Документ Microsoft Word 97 - 2003 и выберите Свойства
- Вна экране «Свойства» перейдите на вкладку «Безопасность» и измените «Разрешения на запуск и активацию» на «Касто»mize.
- Нажмите кнопку «Редактировать» и добавьте учетную запись NETWORK SERVICE на локальном компьютере (если не используете олицетворение ... Если используете олицетворение, добавьте соответствующего пользователя или группу) в список пользователей и установите флажок «Локальный запуск»и «Локальная активация»
Убедитесь, что учетная запись NETWORK SERVICE локального компьютера (если не используется олицетворение ... Если используется олицетворение, то соответствующий пользователь или группа) имеет соответствующиеразрешения на чтение / изменение папок и файлов, которые вы будете открывать и / или сохранять в.
Создайте каталог «Рабочий стол» в папке: C: \ Windows\ System32 \ config \ systemprofile \ и предоставьте полные разрешения локальной учетной записи NETWORK SERVICE (или учетной записи, под которой работает ваше приложение ASP .NET) [ПРИМЕЧАНИЕ. Я полагаю, что этот и следующий шаг применяются, только если НЕ используется олицетворение]
Предоставить разрешения на изменение / чтение / выполнение для папки C: \ Windows \ System32 \ config \ systemprofile
Надеюсь, чтоНекоторым это помогает и не слишком смущает ...