2

据我所知,asp.net 已与 IIS 集成。

也就是说,无论传入的请求是什么,asp.net 运行时总是托管在 IIS7 中。IE。.aspx请求或其他静态文件请求,例如.html.jpg

我们知道,在 IIS6 中,aspnet_isapi.dll会加载创建 asp.net 运行时,并且只有在 , 等请求到达时才运行.aspxasp.net .ashx

现在 asp.net 已经在“集成模式”下与 IIS7 集成,有什么用aspnet_isapi.dll?iis7中还能看到aspnet_isapi.dll是不是兼容性问题?

4

1 回答 1

1

简而言之,它仅适用于经典模式。

在经典管道模式下,ASP.NET 作为 ISAPI 扩展插入 IIS 请求处理管道 - 与在 IIS 6 中的方式完全相同。事实上,如果您打开 %WINDIR%\system32\inetsrv\config\applicationHost。配置文件并找到其中的部分,您可以看到如何配置 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,这确保此处理程序映射仅在应用程序池配置为以经典模式运行时生效。

于 2014-01-06T17:16:17.467 回答