我已经在我的开发Cassini服务器(使用dotless)中成功使用了.less
个文件几周但是当我发布到我的本地IIS服务器时,它们会产生404错误。将我的调试器附加到IIS不会产生任何异常。我也重新启动了我的IIS应用程序池和服务器。
有什么想法吗?
答案 0 :(得分:31)
看起来你在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编号。
答案 1 :(得分:9)
在这次讨论中添加(很晚,我意识到)我的两点。
我遇到了同样的症状,之前提到的修复对我不起作用。我做了然而最终找到了这些症状的另一个原因并为此解决了这个问题。
我的案例中的404回复在回复正文中包含以下消息:
/ *发生错误。在本地机器上查阅日志或查看。 * /
这似乎表明确实找到了较少的文件并且dotLess正在处理请求(该消息可以在dotLess的源代码中找到),但在处理请求期间发生了FileNotFoundException。
我将问题追溯到@import语句,该语句引用了IIS服务器上神秘不存在的.less文件,即使它存在于开发服务器下。
事实证明,这个有问题的.less文件的构建操作设置为None,而不是Content,就像我项目中的所有其他.less文件一样。
所以接下来的逻辑问题是为什么地球上的Build Action不正确?
好吧,我已经将文件添加为.css文件,然后决定将其导入.less文件,然后将其重命名为.less(因为.css是.less的子集,但少了不导入css文件)。我用一个新的.css文件重复了这个过程,发现问题是可重现的。
似乎Visual Studio将构建操作从“内容”更改为“无”,这是将.css重命名为.less的意外副作用。因此,重命名的.less文件不会发布到IIS服务器。