Я создал сопоставление обработчика сценария на 64-битной Windows 2008 с IIS 7. DLL обработчика никогда не вызывается, и я получаю ошибку 404. На идентичной коробке, только под управлением 32-битной Windows 2008, все работает нормально. Ниже приведены карты обработчиков в файле web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="DeltekTE" path="*.jsp" verb="*" modules="IsapiModule" scriptProcessor="D:\NewTime\DeltekTC\iisproxy.dll" resourceType="Unspecified" preCondition="bitness32" />
<add name="DeltekTC" path="*.msv" verb="*" modules="IsapiModule" scriptProcessor="D:\NewTime\DeltekTC\iisproxy.dll" resourceType="Unspecified" preCondition="bitness32" />
</handlers>
</system.webServer>
</configuration>
В ограничениях ISAPI и CGI на уровне сервера dll разрешено запускаться. Пользователь сетевой службы и IIS_USRS могут читать и выполнять dll. Почему не работает отображение?
Вероятно, вы захотите убедиться, что ваш пул приложений установлен на 32-битный, а не только ваш обработчик.
Попробуйте посмотреть пул приложений в диспетчере IIS, щелкните пул приложений, затем щелкните Дополнительные параметры. Измените "включить 32-битные приложения" на true.
Вы также можете использовать AppCMD, чтобы изменить это:
C:\Windows\System32\inetsrv\AppCMD.EXE SET AppPool "DefaultAppPool" /enable32BitAppOnWin64:true
Вам нужно будет изменить "DefaultAppPool" на имя пула приложений:
C:\Windows\System32\inetsrv\AppCMD.EXE LIST AppPool
Вы также можете добавить новый пул приложений только для этого:
C:\Windows\System32\inetsrv\AppCMD.EXE ADD AppPool /name:"New32BitPool"
C:\Windows\System32\inetsrv\AppCMD.EXE SET AppPool "New32BitPool" /enable32BitAppOnWin64:true