【问题标题】:Styles from dotless files not used未使用无点文件的样式
【发布时间】:2015-02-17 01:49:12
【问题描述】:

我们有一个使用 .less 文件的网站(预编译器 dotless 已使用 nuget 安装),但是 .less 文件不作为 css 文件处理。

当尝试在 firefox 中查看网站时,控制台会出现以下错误: 样式表 http:// website/css/init.less 未加载,因为它的 MIME 类型“application/octet-stream”不是“text/css”。

我们的无点文件正在尝试导入更多文件:

@import "imports";
..

但是即使用 css 代码替换这个文本,样式仍然没有应用。但是,如果我在 Visual Studio 中访问该文件,它会显示导入文件中的所有 css。

【问题讨论】:

标签: css asp.net webforms less dotless


【解决方案1】:

如果您使用 dotLess 处理程序动态处理和提供您的 .less 文件(这对于调试来说很好,但您可能需要考虑为发布进行预编译),您需要确保您还使用正确的 mimetype 发送它们。

您可以在 IIS Admin 中的服务器级别执行此操作(如果您可能将其用于计算机上的多个站点),也可以通过 web.config 在本地站点级别执行此操作 - 请注意,您不能两者都做,IIS 会抱怨文件扩展名有多个条目。

要在 web.config 中执行此操作,请在 <configuration><system.webServer> 元素中添加以下元素:

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

显然,如果您已经有一些 mimemap 条目,只需在此处添加 mimemap。

这将确保 IIS 声称 .less 文件作为 CSS 处理程序提供,而不是默认的 application/octect-stream

如果仍然没有按处理方式提供服务,您还需要检查其他几件事:

  1. 确保在&lt;system.webserver&gt;&lt;handlers&gt;&lt;system.web&gt;&lt;httpHandlers&gt; 部分中正确注册了处理程序(取决于您使用的IIS 版本:
    &lt;add name="dotless" path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler,dotless.Core" resourceType="File" preCondition="" /&gt;

    &lt;add path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler, dotless.Core" /&gt;
  2. 确保将 IIS 配置为通过步骤 1 中配置的 ASP.NET 处理程序发送所有请求。默认情况下,.less 文件可能被视为“静态文件”,并且只会由 StaticFileModule 处理。

【讨论】:

  • 我们已经尝试了配置文件设置,但是它仍然显示较少文件的内容并且没有正确处理它们。
  • 您确定 dotLess 处理程序已正确注册吗?
  • 我认为它设置正确,但我现在不确定。我通过 nuget 安装了 dotless,将所需的位添加到 web.config 文件中。根据 dotless 网站,这就是您所要做的。我们将这个解决方案作为一个网站运行,而不是一个 web 应用程序,这样会有所不同吗?
  • 通过 NuGet (Install-Package dotLess) 安装应该为您正确设置 web.config 中的所有内容:我刚刚添加到答案中的 2 个处理程序以及 configSection 和默认设置。您在哪个版本的 IIS 上运行?
  • IIS 选项确实对我们有用,因此我们决定继续使用它作为我们的解决方案。
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多