Что такое минимальные шаги, необходимые для работы ISAI в IIS7 для запроса www.website.com/test/bin/ISAPIGet.dll?a=b? Пожалуйста, не обращайтесь к поисковым запросам Google, они очень общие и не работают. Я написал очень простой файл ISAPIGet.dll в Delphi2010, который отлично работает в IIS5 Win2000. Затем я поместил его на IIS7 SBS2008, в папку C: \ inetpub \ wwwroot \ website \ test \ bin. Создан сайт/сайт, Заявки на/испытание, VirtualDirectory для/бункера, в HandlerMappings для/бен добавлен скрипт карты * .dll в мою ISAPIGet.dll, позволила моей библиотеку DLL в ISAPIandCgiRestrictions, создал 32-битный ApplicationPool неуправляемой код , Классический режим, связал его/тест. При запросе www.website.com/test/bin/ISAPIGet.dll?a=b Я получаю всевозможные ошибки, такие как 500, 503 (когда AppPool не удается), в то время как домашняя страница www.website.com работает нормально. Что еще мне делать? Нужно ли мне настраивать файл web.config, где и как?Как настроить Delphi 2010 ISAPI.dll в IIS7 64bit?
ответ
Как я помню, у меня были схожие проблемы с получением нашей ISAPI DLL для работы в IIS7 на WinSvr2008R2 (64b). Я записал несколько быстрых заметок, чтобы помочь мне повторить шаги, которые в конечном итоге заставили его работать. Я постараюсь предоставить их здесь (по крайней мере, то, что мы сделали).
- Грант «Читать & Выполнить, содержимое папки, и чтение» права на IUSR в папку
C:\PathToISAPI_DLL
- Скопируйте все DLL файлы, которые ISAPI DLL должна работать в
c:\windows\syswow64
папку (например, midas.dll , dbxmss.dll и т.д.) - Запуск диспетчера IIS
- Добавить приложение бассейн «MyAppPool» [не удалось, классический, не начать сейчас]
- Изменить «Расширенные настройки» нового пула приложений, чтобы позволить 32-битным , плюс установленный тайм-аут простоя
- Добавить приложение «MyApp» на свой сайт, используя «MyAppPool» и установить физический путь к
C:\PathToISAPI_DLL
Теперь вы должны сделать несколько шагов на DOS строке для завершения настройки вещи:
cd /d c:\windows\system32\inetsrv
REM *** Grant rights to execute the DLL ***
appcmd.exe set config -section:isapiCgiRestriction /+[path='C:\PathToISAPI_DLL\ISAPI.dll',allowed='true']
REM *** Grant the url of the Execute access for hander mappings ***
appcmd.exe set config "Default Web Site/MyApp/ISAPI.DLL" "/commit:Default Web Site/MyApp" /section:handlers /accessPolicy:Read,Script,Execute
REM *** Make sure you have an ISAPI module mapping for *.dll at that path ***
appcmd.exe list config "Default Web Site/MyApp" /section:handlers | findstr /i *.dll
Вот в чем мои заметки. Я успешно последовал за ними несколько раз, и он всегда работал. У меня никогда не было, чтобы заставить его работать, используя только графический интерфейс. Мне всегда должен был запустить команды appcmd
в командной строке DOS, чтобы завершить настройку.
Иногда я все еще вижу ошибку 404, и в этом случае я удаляю файл web.config из папки с ISAPI.DLL и снова запускаю последние две команды appcmd
. Конечно, у моей ISAPI DLL нет других настроек в файле web.config, поэтому не удастся просто удалить его ...
Не потому ли, что dll 32 бит, а IIS7 - это 64-битный процесс, так что он не может читать 32-разрядную dll Delphi?
Ваша основная страница - статический html, который без проблем обрабатывается IIS.
Но когда IIS пытается загрузить ISAPIGet.dll
, он терпит неудачу, потому что это не 64-битная библиотека, или одна из ее зависимостей отсутствует.
- Вы уверены вы используете IIS7 приложение-пул в 32-битном режиме?
- У вас есть все необходимые суббиблиотеки и bpl в том же пути или в c: \ windows \ syswow64?
Что ваш журнал сервера говорит об ошибках? – jachguate
Вы должны захватить дамп аварий и проанализировать, http://support.microsoft.com/kb/2580960 –
Я не согласен, что вопрос слишком неоднозначен. 99/100 пошаговые руководства по шагам веб-промаха, чтобы добавить 32-битную ISAPI-dll в IIS7. Пройдя то же расстройство, что и ОП 2 года назад, его вопрос имеет для меня прекрасный смысл. –