Классическая ASP и COM DLL не работают в Server 2008 R2 (ошибка во время выполнения Microsoft VBScript "800a01ad" компонент ActiveX не может создать объект)
Я создал DLL в Visual Studios 2010. Я выполнил следующие шаги:
Дано построить строгое имя, связав с ним пару ключей (файл snk)
Для каждого класса указан отдельный ProgID и GUID.
Поскольку это 64-битная DLL, я убедился, что использовал RegAsm.exe, расположенный в папке FrameWork64/v4xxxx. Я использовал RegAsm.exe /codebase ECE2.dll
Я запустил 'gacutil -i' в DLL
Все эти шаги были успешными. DLL и страница ASP, на которой я ее использую, хранятся в intetpub/wwwroot.
Теперь DLL работает нормально на моем ноутбуке и домашнем компьютере (оба работают под управлением Windows 7 Ultimate). Я сейчас пытаюсь заставить его работать на Windows Server 2008 R2. Вот где у меня проблема.
Я выполняю те же шаги, что и выше, и все они успешны. Однако, когда я запускаю страницу ASP, я получаю сообщение об ошибке, которое предполагает, что она НЕ была зарегистрирована, даже если она имеет:
Компонент ActiveX Microsoft VBScript во время выполнения "800a01ad" не может создать объект: "ECE2.CSV_DataSet"
Я думал, что это может быть настройка в IIS, которая нуждается в изменении. Обратите внимание, что этот сервер уже настроен для разрешения страниц Classic ASP, поэтому я знаю, что это не так. Может ли кто-нибудь дать мне какое-либо указание относительно того, есть ли конкретный параметр, который мне нужно изменить на сервере, или есть ли дополнительные перегибы безопасности, через которые я должен перейти, чтобы заставить его работать на Server 2008, что мне не нужно делать в Windows 7 Ultimate?
1 ответ
Проверьте дополнительные параметры пула приложений, в котором выполняется это приложение ASP. Для параметра "Включить 32-разрядное приложение" установлено значение "Истина". Если это так, то это ваша проблема, вы не можете создать 64-битную DLL под 32-битным пулом.
Есть ли причина, по которой вы считаете это "64-битной DLL" вместо простого "Any CPU"? Если нет, то это также для использования в качестве 32-битной библиотеки DLL.
В противном случае вам нужно будет запустить это приложение ASP без "Включить 32-битное приложение", чтобы оно работало как 64-битное, но тогда, вероятно, есть причина, по которой он установлен в первую очередь. Поэтому следующим шагом является создание нового пула приложений, у которого нет этого параметра, и запуск части ASP в качестве отдельного приложения в этом пуле.