据我所知,asp.net已与IIS集成。
也就是说,无论传入的请求是什么,asp.net运行时总是托管在IIS7中。
即。 .aspx
请求或其他静态文件请求,例如.html
或.jpg
。
我们知道在IIS6中,aspnet_isapi.dll
将被加载以创建asp.net运行时并仅在.aspx
,.ashx
等请求到达时运行asp.net。
现在asp.net已经在“集成模式”中与IIS7集成了aspnet_isapi.dll
的用法是什么?这是我们仍然可以看到iis7中的aspnet_isapi.dll是兼容性的原因吗?
答案 0 :(得分:1)
简而言之,它仅适用于经典模式。
使用经典管道模式,ASP.NET作为ISAPI扩展插入IIS请求处理管道 - 与IIS 6中的完全相同。实际上,如果打开%WINDIR%\ system32 \ inetsrv \ config \ applicationHost.config文件并找到其中的部分,您可以看到如何配置IIS以将ASP.NET特定请求映射到aspnet_isapi.dll:
<handlers accessPolicy="Read, Script">
...
<add name="PageHandlerFactory-ISAPI-2.0"
path="*.aspx" verb="GET,HEAD,POST,DEBUG"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
...
</handlers>
注意处理程序映射的preCondition属性。此属性设置为classicMode,它确保此处理程序映射仅在应用程序池配置为以经典模式运行时生效。