13

我想有這樣定義的捆綁產品:有沒有辦法有一個包名稱的文件擴展名?

bundles.Add(
    new StyleBundle("~/style.css").Include(
     //... 
)); 

如果包名字只是"~/style"這個工程,但文件擴展名始終返回404我懷疑服務器搜索CSS和JS在驅動器上的文件,而忽略了捆綁系統,但我無法找到任何人誰是試圖包括束名稱的文件擴展名。這可能沒有像URL重寫這樣的事情嗎?

回答

19

您可以添加以下到您的<system.webServer>節在web.config中:

<modules runAllManagedModulesForAllRequests="true" /> 

這將確保靜態資源,如.js.css請求將通過管理模塊,並通過ASP攔截。 NET MVC。

作爲替代使runAllManagedModulesForAllRequests你只能爲你需要使用的URL配置它們的所有請求。所以<handlers>裏面添加以下內容:

<handlers> 
    <!-- ... --> 
    <add name="scriptBundle" verb="*" path="script.js" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" /> 
    <add name="cssBundle" verb="*" path="style.css" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" /> 
</handlers> 
+3

嗯,是有一個較溫和的解決方案,它只會影響的.js和.css文件? – sbking

+0

好的,看我更新的答案。 –

+1

+1,但有'路徑=「*。bundle.js」'將阻止處理從真正的文件上運行。 –

相關問題