2013-03-07 3 views
0

Что такое минимальные шаги, необходимые для работы 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?

+0

Что ваш журнал сервера говорит об ошибках? – jachguate

+0

Вы должны захватить дамп аварий и проанализировать, http://support.microsoft.com/kb/2580960 –

+0

Я не согласен, что вопрос слишком неоднозначен. 99/100 пошаговые руководства по шагам веб-промаха, чтобы добавить 32-битную ISAPI-dll в IIS7. Пройдя то же расстройство, что и ОП 2 года назад, его вопрос имеет для меня прекрасный смысл. –

ответ

5

Как я помню, у меня были схожие проблемы с получением нашей ISAPI DLL для работы в IIS7 на WinSvr2008R2 (64b). Я записал несколько быстрых заметок, чтобы помочь мне повторить шаги, которые в конечном итоге заставили его работать. Я постараюсь предоставить их здесь (по крайней мере, то, что мы сделали).

  1. Грант «Читать & Выполнить, содержимое папки, и чтение» права на IUSR в папку C:\PathToISAPI_DLL
  2. Скопируйте все DLL файлы, которые ISAPI DLL должна работать в c:\windows\syswow64 папку (например, midas.dll , dbxmss.dll и т.д.)
  3. Запуск диспетчера IIS
  4. Добавить приложение бассейн «MyAppPool» [не удалось, классический, не начать сейчас]
  5. Изменить «Расширенные настройки» нового пула приложений, чтобы позволить 32-битным , плюс установленный тайм-аут простоя
  6. Добавить приложение «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, поэтому не удастся просто удалить его ...

1

Не потому ли, что dll 32 бит, а IIS7 - это 64-битный процесс, так что он не может читать 32-разрядную dll Delphi?

Ваша основная страница - статический html, который без проблем обрабатывается IIS.

Но когда IIS пытается загрузить ISAPIGet.dll, он терпит неудачу, потому что это не 64-битная библиотека, или одна из ее зависимостей отсутствует.

  • Вы уверены вы используете IIS7 приложение-пул в 32-битном режиме?
  • У вас есть все необходимые суббиблиотеки и bpl в том же пути или в c: \ windows \ syswow64?

 Смежные вопросы

  • Нет связанных вопросов^_^