У меня возникла проблема, связанная с запуском .Net dll из классического приложения asp на 64-битном сервере Windows Server 2008 с IIS7. Ситуация следующая:
Я написал сборку .Net C # для выполнения некоторых задач шифрования. Эта сборка стала доступной для классической среды ASP путем наследования от ServicedComponent, гарантируя, что файл assemblyinfo имеет атрибут ComVisible (true), и она была установлена с помощью командной строки regsvcs.
При тестировании на моем собственном рабочем столе (XP с IIS6) все работало нормально. При переходе на IIS 7 и Windows Server 2008 я получаю печально известную ошибку «Ошибка ASP 0177 Server.CreateObject».
Я безрезультатно пробовал следующее:
- Убедитесь, что на сервере установлены функции ASP и Script Extension, так как это не является значением по умолчанию для IIS7. Это позволило мне выполнять простые команды ASP, но не server.createobject для сборки .net.
- Включена поддержка 32-битных приложений для пула приложений, поддерживающего классический сайт asp.
- Используется NetworkService в качестве идентификатора для пула приложений, поддерживающего классический сайт asp.
- Пытался зарегистрировать dll с помощью regsvr32, но это не удалось
- Я могу создавать другие объекты, такие как "scripting.filesystemobject"
- Перемещение dll в каталог wow64 и затем использование regsvcs для их регистрации.
- И да, когда я выполнял команды regsvcs, они были из командной строки, запущенной с помощью администратора «RunAs». Команды regsvcs успешно зарегистрированы как в 64-битной, так и в 32-битной версиях. Однако при использовании из классического приложения asp это не удается.
Этот вопрос тесно связан с этим а>. Однако я думаю, что этот вопрос был больше связан с использованием инструментов на сервере, а не с программной проблемой, похожей на мою.
У кого-нибудь есть еще идеи, которые можно попробовать?