如何将*.less添加到IIS 7.0?

40

我在本地机器上设置了一个虚拟应用程序并且它正在运行,但它没有加载CSS文件。我正在使用lessCSS来为我的应用程序添加样式,我认为这里未能加载CSS的原因是LESSCSS样式表使用.less扩展名。

那么如何读取*.less文件扩展名呢?

2个回答

76
不需要添加处理程序,只需为.less添加MIME类型(现在称为Internet Media Type),并将MIME类型设置为text/css
Web服务器会查看请求的扩展名(就像文件的扩展名一样)。如果它们知道扩展名,则会提供文件,并添加HTTP头字段以指示文件的内容格式。例如,当他们提供静态HTML文件时,他们会添加Content-Type:text/html头字段。这样,浏览器就可以理解使用哪个应用程序来处理响应体。
如果Web服务器不知道请求的扩展名,则会搜索是否已安装了另一个已知扩展名的应用程序。如果有另一个应用程序,则让该应用程序提供文件。
您可以考虑以下示例以完全理解发生了什么:
你去餐厅(你是HTTP请求)。你点了一份披萨(披萨是扩展名)。厨师知道如何制作披萨,因此为您服务。
现在想象一下,您又去了同一家餐厅,在点了一份假的食物Bomyhoor。厨师不知道如何烹饪和服务这种食物。他/她问其他厨师是否已经有人在厨房里(厨房是Web服务器)知道如何烹饪?如果有人知道如何烹制Boomyhoor,那么他/她会为您服务。
现在,想象一下,您又去了一次餐厅,这次点了一份Graboori。厨师已从字典中了解到Graboori只是披萨的另一个名称。因为他知道如何制作披萨,所以他就用披萨来代替。
当您向Web服务器添加MIME类型时,您只是将请求扩展名映射到文件类型。

6
我认为OP是在问如何使用自定义HTTP处理程序在服务器端进行转换。但是,如果使用less.js客户端方法,则你的答案是正确的。 - Domenic
1
这对于每个单独的用户来说都是超级繁重的。OP正在寻找一个自动编译器,这样当您完成编辑.less文件(并保存它)时,它会将其编译为CSS文件并将其放在正确的位置。Eclipse有一个用于开发的插件,我知道你可以在Linux盒子上设置apache来为你执行更少的命令,但是对于IIS来说,看起来你必须使用本地编译器或专用服务。 - Eric Hodonsky
6
请注意,如果您将MIME类型定义为text/css,则您的Web服务器可能会返回HTTP错误码406 -不可接受。您应该使用text/less作为MIME类型。 - Maayan Glikser
2
如果你在使用ASP.NET的话,我会推荐使用dotless来处理它;否则客户端库(less.js)也可以正常工作。 - Shawn Wildermuth
@MaayanGlikser 我在网上搜索了几个小时才找到了答案。每个人都说要设置一个text/css的MIME类型。我最终通过设置text/less来解决我的406错误。 - deltree
1
补充@Domenic的评论,如果您想要预编译LESS并且正在使用Visual Studio,我强烈推荐Web Essentials(http://vswebessentials.com/)。 它会在保存时编译LESS,然后您只需提供生成的CSS即可。 - undeniablyrob

1
你必须添加


<staticContent>
    <mimeMap fileExtension=".less" mimeType="text/css" />
</staticContent >

将以下内容添加到您的 Web.config 文件中:

示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
        <mimeMap fileExtension=".less" mimeType="text/css" />
    </staticContent >
    <rewrite>
      <rules>
        <rule name="WordPress: http://YourSite.com" patternSyntax="Wildcard">
          <match url="*" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
  <system.web>
    <authentication mode="None" />
  </system.web>
</configuration>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接