我在装有 IIS 7 的 Windows 2008 64 位上创建了一个脚本处理程序映射。处理程序 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。为什么映射不起作用?
答案1
您可能需要确保您的应用程序池设置为 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
您还可以为此添加一个新的 AppPool:
C:\Windows\System32\inetsrv\AppCMD.EXE ADD AppPool /name:"New32BitPool"
C:\Windows\System32\inetsrv\AppCMD.EXE SET AppPool "New32BitPool" /enable32BitAppOnWin64:true