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

时间:2011-05-19 22:04:28

标签: asp.net iis iis-7 iis-6 isapi

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

我们现在将此Web应用程序移至IIS 7(经典模式),似乎无法找到以这种方式设置IIS 7的方法。有没有办法更改IIS 7的设置,以便asp.net_isapi.dll处理* .css文件的请求,就像我们在IIS 6中做的那样?

2 个答案:

答案 0 :(得分:2)

你看过这个链接吗?它对你有帮助吗? http://learn.iis.net/page.aspx/508/wildcard-script-mapping-and-iis-7-integrated-pipeline/

实际上:IIS7 - >网站 - >处理程序映射 - >添加通配符脚本匹配

IIS 7经典管道模式中的通配符脚本映射

使用经典管道模式,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,它确保此处理程序映射仅在应用程序池配置为以经典模式运行时生效。 现在,如果要为在经典模式下运行的ASP.NET配置通配符映射,可以通过在IIS管理器中选择“处理程序映射”,然后单击“添加通配符脚本映射...”操作来执行此操作。

答案 1 :(得分:2)

定义一个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>
相关问题