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

Как заставить старую DLL работать на 64-битном сервере

Я перемещаю веб-сайты своей компании с сервера 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 

У меня уже есть этот сайт, работающий в пуле приложений, для которого установлен 32-битный режим. Но я все равно получаю ошибку.

Кто-нибудь испытал это? Я расстроен, потому что вся информация, которую я ищу, говорит, что все, что мне нужно сделать, это настроить пул приложений для работы в 32-битном режиме. Я сделал это, но это все еще не работает. Что еще я мог проверить?

Из Вот если нашел это:

Эта ошибка означает «Недопустимая строка класса» - другими словами, вызов CreateObject завершился неудачно, поскольку объект имени не может быть найден подсистемой OLE. Причины включают:

В конце концов, вы действительно не запускали regsvr32 на сервере.

Вы запустили regsvr32, но он сообщил об ошибке.

Кто-то изменил систему безопасности в части реестра, которая не позволяет подсистеме OLE читать все или часть дерева HKEY_CLASSES_ROOT.

Имя объекта, который вы пытаетесь создать, написано неправильно или неверно.

Определите, не проблема ли это с разрешениями

Кроме того, поскольку вы переходите с 03 на 08, установили ли вы надстройку совместимости управления IIS 6, которая находится в роли IIS? Я не специалист по IIS или ASP, поэтому надеюсь, что это поможет.

Что, вероятно, происходит, так это то, что ваша DLL является 32-битной DLL, а пулы приложений работают в 64-битной версии. Что вам нужно сделать, так это изменить пул приложений, в котором выполняется ваше приложение, на 32-разрядный пул приложений. См. Enable32BitAppOnWin64 по адресу: http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add

Вы можете сделать это в пользовательском интерфейсе, выбрав Application Pool в списке AppPools (выберите узел Tree) и используя Advanced Settings, чтобы включить это.