.less文件在IIS6 + .NET 4 MVC3上静态提供

时间:2011-09-07 10:19:41

标签: .net asp.net-mvc-3 web-config iis-6 less

在.NET 4 MVC3项目中,我在IIS6上运行本地计算机(不要问为什么)。它在IIS中有一个适当的通配符映射到v4 aspnet_isapi.dll,对于.less扩展名也是如此。

Web.config定义了这些IIS6和IIS7 httphandler。

<system.web>
  <httpHandlers>
    <add type="dotless.Core.LessCssHttpHandler,dotless.Core" validate="false" path="*.less" verb="*" />
  </httpHandlers>
</system.web>

<system.webServer>
  <handlers>
    <add name="less" type="dotless.Core.LessCssHttpHandler,dotless.Core" path="*.less" verb="*" />
  </handlers>
</system.webServer>

冲浪到/path/to/nonexisting.less会抛出一个正确的错误,该错误向我显示LessCssHttpHandler正在运行的堆栈跟踪。

浏览到/path/to/existingfileondisk.less只需按原样下载原始文件。对我来说,似乎现有的静态文件处理程序在这里,虽然我不确定。

我缺少什么(除了新机器;))?

2 个答案:

答案 0 :(得分:2)

我也遇到过这个问题,下一个解决方案解决了这个问题:

如果您使用的是IIS 6或更早版本,或者未使用IIS的集成管道,则需要配置Web服务器的设置,以便将.LESS文件的请求路由到ASP.NET引擎(以便它们可以是由.LESS HTTP处理程序处理)。有关详细信息,请参阅How ASP.NET Web Pages are Processed on the Web Server

步骤如何配置IIS6:

  1. 右键单击网站 - &gt;属性 - &gt;主页目录 - &gt;配置 - &gt;应用程序扩展 - &gt;添加 - &gt; :
    • 可执行文件 = asp.net DLL的路径(f.e.c:\ windows \ microsoft.net \ framework \ v4.0.30319 \ aspnet_isapi.dll)
    • 延伸 =。无法
    • 取消选中“验证文件是否存在”
  2. 配置Mime类型:右键单击网站 - &gt;属性 - &gt; HTTP标头 - &gt; MIME类型 - &gt;新 - &gt; Extension = .less,MIME type =“text / css”

答案 1 :(得分:1)

我建议你将.less文件全部放在文件夹中。假设您在root上创建了一个名为 Less 的文件夹。您已将此行添加到 global.asax 以使其正常工作:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("Less/{*path}");
    ...
}