【问题标题】:How to add *.less to IIS 7.0?如何将 *.less 添加到 IIS 7.0?
【发布时间】:2011-09-06 11:59:52
【问题描述】:

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

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

【问题讨论】:

    标签: css iis-7 less


    【解决方案1】:

    无需添加处理程序。只需为.less 添加一个 MIME 类型(现在称为 Internet 媒体类型)并将 MIME 类型设置为 text/css

    Web 服务器可以看到请求的扩展名(就像文件的扩展名一样)。如果他们知道扩展名,他们就提供文件,并添加一个 HTTP Header Field 来指示文件的内容是哪种格式。例如,当它们提供静态 HTML 文件时,它们会添加 Content-Type: text/html 标头字段。这样,浏览器就可以了解使用哪个应用程序来处理响应正文。

    如果网络服务器不知道请求扩展名,它们会搜索以查看是否已经安装了另一个知道该扩展名的应用程序。如果有另一个应用程序,则他们让该应用程序提供文件。

    你可以想这个例子来充分理解发生了什么:

    你去一家餐馆,(你是HTTP request)。你要一个披萨(披萨是扩展名)。厨师知道如何提供比萨饼,因此它为您服务。

    现在假设您再次去同一家餐厅,并要求Bomyhoor(假食品)。厨师不知道如何烹饪和服务。他/她请其他厨师看看厨房里是否已经有其他人(厨房是网络服务器)知道如何烹饪?如果有人会做饭Boomyhoor,那么他/她会为您服务。

    现在,考虑下一次,这次请求Graboori。 Chef 已经知道(从字典中)Graboori 只是 Pizza 的另一个名称。因为他知道如何提供比萨饼,所以他只是提供。

    当您将 MIME 类型添加到 Web 服务器时,您只需将请求扩展名映射到文件类型。

    【讨论】:

    • 我认为 OP 是在询问使用自定义 HTTP 处理程序来执行服务器端的转换。但是,如果使用 less.js 客户端方法,您的答案是正确的。
    • 这对于每个用户来说都是非常繁重的。 OP 正在寻找一个自动编译器,因此当您完成对 .less 的编辑(并保存)时,它会将其编译为 CSS 文件并将其放在正确的位置。 Eclipse 有一个用于开发的插件,我知道您可以在加载时设置 apache,以便在 linux 机器上使用更少的命令来为您做到这一点,但对于 IIS,您似乎必须使用本地编译器,或专门为其提供服务。
    • 请注意,您的网络服务器可能会返回 HTTP 错误代码 406 - 如果您将 mime 类型定义为 text/css,则不可接受。您应该使用 text/less 作为 mimetype。
    • 如果您使用的是 ASP.NET,我会采用这种方式来处理它;否则客户端库(less.js)工作正常。
    • 要添加到@Domenic 的评论中,如果您希望预编译 LESS 并且使用 Visual Studio,我强烈推荐 Web Essentials (vswebessentials.com)。它会在保存时编译 LESS,您只需提供生成的 CSS。
    【解决方案2】:

    你必须添加

    <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 2010-12-05
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      相关资源
      最近更新 更多