Не удается создать экземпляр COM-объекта.Net на классической странице ASP/VBScript (ошибка ASP 0177).

Я написал библиотеку классов с поддержкой взаимодействия COM в C#, используя.Net 3.5. Объект предназначен для предоставления некоторых служебных функций для классических ASP-страниц. Я написал страницу test.asp, которая создает экземпляр нужного объекта и вызывает его методы. Отлично работает на моей машине.

На другом компьютере (Windows Server 2003 - Standard Edition) он не работает, даже если сборка зарегистрирована с помощью regasm. Я проверил regedit и afaik, он выглядит нормально.

Я получаю сообщение об ошибке "ASP 0177" (код ошибки), "8000ffff; Server.CreateObject-Fehler" (описание ошибки), которое переводится в Server.CreateObject-Error.

Btw. сборка подписана и не имеет каких-либо других пользовательских сборок в качестве зависимостей (только системные компоненты).

Кто-нибудь испытывал нечто подобное?

3 ответа

Решение

Предоставление пользователю IUSR (или тому, кто является вашим пользователем IIS) доступа на чтение к следующему ключу реестра сделал для меня работу и устранил проблему.

HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones

Я думаю, что это проблема безопасности. Похоже, вы разработали и протестировали компонент на своем компьютере, который имеет много отличий по сравнению с сервером (например, с установленной Visual Studio).


РЕДАКТИРОВАТЬ: Пожалуйста, посмотрите на это Microsoft "Исправления исправление":

  • Найдите и щелкните следующий раздел реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\ FeatureControl\FEATURE_IGNORE_ZONES_INITIALIZATION_FAILURE_KB945701
  • Примечание. Если подраздел FEATURE_IGNORE_ZONES_INITIALIZATION_FAILURE_KB945701 не существует, его необходимо создать вручную. Если вы используете 64-разрядную ОС, вам может понадобиться использовать HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\ FeatureControl\FEATURE_IGNORE_ZONES_INITIALIZATION_FAILURE_KB945701
  • Щелкните правой кнопкой мыши FEATURE_IGNORE_ZONES_INITIALIZATION_FAILURE_KB945701, выберите пункт Новый, а затем щелкните Значение DWORD
  • Введите w3wp.exe в качестве имени новой записи реестра и нажмите клавишу ВВОД.
  • Щелкните правой кнопкой мыши w3wp.exe и выберите команду "Изменить".
  • В поле "Значение" введите 1 и нажмите кнопку "ОК".

После установки этого раздела реестра, простой перезапуск пула приложений применит изменения. Ваши компоненты.NET COM больше не будут случайным образом переставать работать без реального решения, кроме перетасовки пулов приложений!

Другие вопросы по тегам