2011-05-17 24 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