我已经.less
在我的开发 Cassini 服务器(带有dotless)中成功使用了几个星期的文件,但是当我发布到我的本地 IIS 服务器时,它们会产生 404 错误。将我的调试器附加到 IIS 不会产生异常。我也重新启动了我的 IIS 应用程序池和服务器。
有任何想法吗?
看起来您在 IIS 上缺少 mime 类型。
对于 IIS7,将以下内容添加到您的web.config
:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".less" mimeType="text/css" />
</staticContent>
</system.webServer>
对于 IIS6,您可以执行以下操作(假设您具有管理员 RDP 访问权限):
cscript adsutil.vbs set W3SVC/1/Root/MimeMap ".less, text/css"
/1/
站点的 IIS 编号在哪里。
只是在这个讨论中添加(我意识到很晚了)我的两点。
我刚刚遇到了同样的症状,前面提到的修复对我不起作用。然而,我最终找到了这些症状的另一个原因和解决方案。
在我的案例中,404 响应在响应正文中包含以下消息:
/* 发生了错误。在本地机器上查阅日志或查看。*/
这似乎表明确实找到了less文件并且该请求正在由dotLess处理(该消息可以在dotLess的源代码中找到),但是在处理请求期间发生了FileNotFoundException。
我将问题追溯到一个 @import 语句,该语句引用了一个 .less 文件,该文件神秘地不存在于 IIS 服务器上,即使它存在于开发服务器下。
事实证明,这个有问题的 .less 文件的构建操作设置为 None,而不是 Content,就像我项目中的所有其他 .less 文件一样。
所以下一个合乎逻辑的问题是,为什么 Build Action 到底是不正确的?
好吧,我已将文件添加为 .css 文件,然后决定将其导入 .less 文件,因此将其重命名为 .less(因为 .css 是 .less 的子集,但 less 不导入 css 文件)。我用一个新的 .css 文件重复了这个过程,发现问题是可重现的。
似乎 Visual Studio 在幕后将构建操作从 Content 更改为 None,这是将 .css 重命名为 .less 的意外副作用。因此,重命名的 .less 文件不会发布到 IIS 服务器。