
Я переношу веб-сайты своей компании с сервера Windows 2003x86 на Windows 2008x64, на котором работает IIS 7.5.
Проблема, с которой я столкнулся, заключается в том, что все DLL, которые нормально работали на старом сервере, теперь выдают ошибку при каждом вызове. Все, что я получаю, это общая ошибка типа:
Ошибка объекта сервера «ASP 0177: 800401f3»
Server.CreateObject не удалось
/folder/scriptname.asp, строка 24
800401f3
Строка, в которой обнаружена ошибка:
'23 lines of comments
set A0SQL_DATA = server.createobject("olddllname.Data")
'the rest of the script
У меня уже есть этот сайт, работающий в App Pool, который настроен на 32-битный режим. Но я все равно получаю ошибку.
Кто-нибудь сталкивался с этим? Я расстроен, потому что вся информация, которую я ищу, говорит, что мне нужно всего лишь настроить пул приложений на работу в 32-битном режиме. Я сделал это, и это все равно не работает. Что еще я могу проверить?
решение1
Отздесьесли нашли это:
Эта ошибка означает "Недопустимая строка класса" — другими словами, вызов CreateObject не удался, так как объект имени не может быть найден подсистемой OLE. Причины включают:
Вы все-таки не запустили regsvr32 на сервере.
Вы запустили regsvr32, но он сообщил об ошибке.
Кто-то изменил безопасность части реестра, что не позволяет подсистеме OLE читать все или часть дерева HKEY_CLASSES_ROOT.
Имя объекта, который вы пытаетесь создать, написано с ошибкой или является неверным.
Определите, связана ли проблема с разрешениями
Кроме того, поскольку вы переходите с 03 на 08, вы установили надстройку IIS 6 Management Compatibility, которая находится в роли IIS? Я не эксперт по IIS или ASP, поэтому надеюсь, что это поможет.
решение2
Вероятно, ваша DLL является 32-битной DLL, а Application Pools работает в 64-битном режиме. Вам нужно будет изменить Application Pool, в котором работает ваше приложение, на 32-битный пул приложений. Смотрите enable32BitAppOnWin64 по адресу:http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add
Это можно сделать в пользовательском интерфейсе, выбрав Application Pool в списке AppPools (выберите узел Tree) и включив его с помощью расширенных настроек.