Назад | Перейти на главную страницу

Ошибка Server.CreateObject_Failed при создании COM-объекта в IIS7 с использованием классического ASP

Я пытаюсь перенести классическое приложение ASP с сервера Windows Server 2003, IIS6 на сервер Windows 2008, IIS 7.

Страница ASP работает нормально, но при первой попытке использовать нашу DLL взаимодействия с .NET происходит сбой со следующей ошибкой в ​​журналах IIS:

2012-01-06 18:50:41 XXXX POST /downloads.asp | 27 | ASP_0177 _: _ 8000ffff | Server.CreateObject_Failed 80 - XXXX Mozilla / 5.0 + (Windows + NT + 6.1; + rv: 8.0) + Gecko / 20100101 + Firefox / 8.0 500 0 0 0

Соответствующая строка на странице ASP:

Установить подписку = Server.CreateObject ("ИМЯ DLL")

Я успешно зарегистрировал DLL с помощью RegAsm.exe и подтвердил с помощью сценария VBscript, который успешно вызвал CreateObject. Я также удостоверился, что NETWORK SERVICE, IUSR_MACHINENAME и IUSR имеют доступ для чтения к расположению DLL и HKEY_USERS ... Internet Settings \ Zones.

Есть предположения?

  1. Убедитесь, что вы разрешаете не только доступ для чтения, но и разрешения на выполнение библиотеки DLL.
  2. Предоставьте IUSR доступ для чтения ко всему HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\Internet Settings Ключ

Если он работает с VBScript, возможно, это проблема разрядности?

Рабочие процессы могут быть установлены с Enable32BitApp, для которого установлено значение True, что является 32-битным, и VBScript, запускаемый из обычного приглашения CMD, будет соответствовать разрядности этого приглашения (который является 64-битным, если он не запускается из SysWow64).

Итак ... сначала проверьте Bitness в порядке. Если это так, попробуйте ProcMon записать в журнал все, что ищет приложение, и проверьте журналы событий на наличие конкретных сообщений об ошибках.