Asp.net 如何让IIS 7将.css文件的请求路由到aspnet_isapi.dll?

Asp.net 如何让IIS 7将.css文件的请求路由到aspnet_isapi.dll?,asp.net,iis,iis-7,iis-6,isapi,Asp.net,Iis,Iis 7,Iis 6,Isapi,我们目前在IIS 6上托管的ASP.NET web应用程序上使用。为了使其正常工作,我们需要调整IIS设置,以便aspnet_isapi.dll(右键单击IIS中的网站->属性->主目录选项卡->配置)处理对*.css文件的请求 我们现在将此web应用程序移到IIS 7(经典模式)上,似乎找不到以这种方式设置IIS 7的方法。有没有一种方法可以更改IIS 7的设置,使*.css文件的请求像在IIS 6中一样由aspnet_isapi.dll处理?您看到这个链接了吗?这对你有帮助吗 实际上是这样的

我们目前在IIS 6上托管的ASP.NET web应用程序上使用。为了使其正常工作,我们需要调整IIS设置,以便aspnet_isapi.dll(右键单击IIS中的网站->属性->主目录选项卡->配置)处理对*.css文件的请求


我们现在将此web应用程序移到IIS 7(经典模式)上,似乎找不到以这种方式设置IIS 7的方法。有没有一种方法可以更改IIS 7的设置,使*.css文件的请求像在IIS 6中一样由aspnet_isapi.dll处理?

您看到这个链接了吗?这对你有帮助吗

实际上是这样的:IIS7->Web站点->处理程序映射->添加通配符脚本匹配

IIS 7经典管道模式下的通配符脚本映射 在经典管道模式下,ASP.NET作为ISAPI扩展插入IIS请求处理管道-与IIS 6中的方式完全相同。事实上,如果打开%WINDIR%\system32\inetsrv\config\applicationHost.config文件并找到其中的部分,您可以看到IIS是如何配置为将ASP.NET特定请求映射到aspnet\u 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>

...
...
请注意处理程序映射的前提条件属性。除此之外,此属性设置为classicMode,这确保此处理程序映射仅在应用程序池配置为以经典模式运行时生效。
现在,如果您想为在经典模式下运行的ASP.NET配置通配符映射,您可以通过在IIS管理器中选择“处理程序映射”,然后单击“添加通配符脚本映射…”操作来完成此操作。

定义HttpHandler并通过web.config将其连接到IIS,在本例中,我有一个名为CssHandler的类,它实现了IHttpHandler接口

<configuration>
  <system.web>
    <httpHandlers>
      <add verb="GET" path="*.css" validate="false" type="CssHandler" />
    </httpHandlers>
   </system.web>

  <!-- for iis7 integrated pipeline-->
  <system.webServer>
    <handlers>
      <add name="CssHandler" verb="GET" path="*.css" preCondition="integratedMode" type="CssHandler" />
    </handlers>
  </system.webServer>

</configuration>


就是这样。谢谢作为对任何感兴趣的人的提示,您也可以将其添加为脚本映射,而不是通配符脚本映射,以便ASP.NET管道只处理“*.css”。我认为*.css也可以工作,但我想复制链接的确切脚本。