2011-05-17 27 views
11

我已经在我的开发卡西尼服务器(与dotless)中成功使用.less文件几周,但是当我发布到我的本地IIS服务器时,它们会产生404错误。将我的调试器附加到IIS不会产生任何异常。我也重新启动了我的IIS应用程序池和服务器。无点文件在IIS中产生404错误

任何想法?

回答

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

你钉了它,谢谢你! Stackoverflow再次来拯救。 – sisdog 2011-05-17 03:43:02

+1

非常爱。我喜欢即时解决方案。 – 2011-10-21 17:40:44

+0

对于IIS6我不得不使用cscript c:/Inetpub/AdminScripts/adsutil.vbs设置W3SVC/1/Root/MimeMap“.less,text/css”' – Myster 2012-03-12 02:45:17

9

只要加上(相当晚,我意识到)我的两位参加这个讨论。

我刚刚遇到了相同的症状,前面提到的修复程序对我无效。我确实然而最终找到这些症状的另一个原因和解决方案。

在我的情况下的404响应中响应的主体包含以下消息:

/*出错。请咨询日志或在本地机器上查看。 */

这似乎是一个指示器,确实发现文件较少,并且请求正在由dotLess处理(该消息可在dotLess的源代码中找到),但在处理请求期间发生了FileNotFoundException。

我将问题追查到一个@import语句,该语句引用了IIS服务器上神秘不存在的.less文件,即使它存在于开发服务器下。

事实证明,这个有问题的.less文件的构建操作被设置为None,而不是内容,就像我项目中所有其他无文件一样。

所以下一个合乎逻辑的问题是为什么地球上的构建操作不正确?

嗯,我已经将该文件添加为.css文件,然后决定将其导入到.less文件中,并将其重命名为.less(因为.css是.less的子集,但较少不导入css文件)。我用一个新的.css文件重复了这个过程,发现问题是可重现的。

似乎Visual Studio将构建操作从Content更改为None,作为将.css重命名为.less的意外副作用。因此,重命名的.less文件不会发布到IIS服务器。

+1

谢谢+1,遇到同样的问题,将一些框架转换为.less,无法弄清楚为什么它会产生一个404,直到我从VS发布中删除所有文件。 – 2014-11-24 02:37:50

+0

是的,让我也是。忘了添加一个新的.less文件到本意是@ import-ed的SVN – rwalter 2014-11-27 20:07:39

+0

哇,这让我觉得太长了。我的主要样式表没有被编译到我的较少版本中,我不知道为什么。谢谢。 – Knostradamus 2015-02-18 16:38:46