Ошибка создания приложения Word.Application в ASP-Classic на IIS7 - PullRequest
1 голос
/ 18 января 2012

Мы работаем над тем, чтобы сертифицировать наше приложение для развертывания в Windows Server 2008 и иметь некоторые проблемы с настройкой.

Следующий код выдает ошибку взаимодействия:

On Error Resume Next
Set WordApp = Server.CreateObject("word.application")
If Err.number <>0 Then
  SetErrorDesc ErrorDesc, "Unable to instantiate word. (" & err.Description & ")<br>"
  SetErrorStatus ErrorStatus,True
End If

Информация об ошибке, возвращаемая в err.Description:

006~ASP 0178~Server.CreateObject Access Error~The call to Server.CreateObject failed while checking permissions. Access is denied to this object.

Сайт настроен на использование определенной учетной записи пользователя для своего пула приложений. Сайт представляет собой смешанное приложение ASP.Net и asp-classic. Я проверил решение Ogawa относительно необходимости наличия системного профиля в папке Desktop и настройки AppPool для загрузки профиля пользователя. Объект Word 97-2003 Document DCOM настроен для запуска с тем же пользователем, что и пул приложений сайта. Запуск и активация, разрешения доступа и разрешения конфигурации - все, что пользователь добавил с полным набором разрешений.

Отредактировано, чтобы добавить: При интерактивном запуске этот скрипт (работающий в cscript или wscript) успешно создает приложение Word.Application и извлекает имя пользователя:

var wordobj = new ActiveXObject("Word.Application");
WScript.echo(wordobj.UserName);
wordobj.quit();

Очевидно, что не является копией Ошибка создания объекта Word в классическом ASP на IIS7 , поскольку мы получаем ошибку в CreateObject for Word.Application, а не при открытии документа.

Сервер Windows 2008 x86.

Что я упустил при настройке этого?

Ответы [ 4 ]

3 голосов
/ 28 января 2012

После записи инцидента поддержки из нашей подписки MSDN мы обнаружили следующее:

В IIS7 необходимо настроить идентификатор процесса как в AppPool, так и в анонимной аутентификации приложения.Если вы используете смешанный ASP и ASP.NET, вы можете настроить анонимную аутентификацию (в подробностях аутентификации сайта), чтобы указывать на идентификатор AppPool, или использовать определенную комбинацию имени пользователя и пароля.

По умолчанию для анонимной аутентификации используется IUSR, а не удостоверение пула приложений.

Если кто-нибудь знает правильный вызов appcmd.exe для установки сквозного удостоверения пула приложений, было бы здоровокомментарий .... хотя наш скрипт может просто использовать ту же комбинацию имени пользователя и пароля, было бы лучше уменьшить количество мест, в которых он хранится, на единицу.

1 голос
/ 25 января 2012

Мне не приходилось очень долго устранять проблемы с автоматизацией Word на стороне сервера, но я попытаюсь это сделать.

Одна из причин, по которой мы привыкли видеть эту проблему, заключается в том, чтопрофиль пользователя не будет загружен.Это может быть неправильная конфигурация с нашей стороны, но, возможно, вы столкнулись с той же проблемой.

Вот как мы ее обошли:

  1. Убедитесь, что профиль пользователя существует дляпользователь AppPool, войдя на сервер IIS от имени этого пользователя.
  2. Создайте и установите службу Windows, которая ничего не делает.Или вы можете использовать существующую службу, которая не имеет смысла (факс).
  3. Настройте службу на «Вход в систему как» для того же пользователя, что и AppPool.
  4. Установите «Тип запуска»в автоматический режим.
  5. Убедитесь, что он работает.

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

0 голосов
/ 13 декабря 2012

Просто попробуйте найти пользователя, который был настроен на вашем локальном компьютере или сервере.Очевидно, что у IUSR_UNKNOWN нет папки «Мои документы», и Microsoft не предоставила этому странному человеку доступ к вашим документам Word через текущий сеанс регистрации пользователей.Удачи, пытаясь убедить Microsoft, что этому человеку разрешен доступ.

Вместо этого создайте нового пользователя или пользователя домена и предоставьте ему права локального администратора (для административных целей) или обычную учетную запись пользователя для обычного использования.И настроить его с учетной записью на вашем локальном компьютере или сервере.Walla.Нет больше глупости.

0 голосов
/ 25 января 2012

Пожалуйста, проверьте ссылку ниже, на которую ответил Огава, которая для меня сработала, создав папку

C: \ Windows \ System32 \ config \ systemprofile \ Desktop

http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required

...