ASP.Net MVC 腳本包導致 404
我搜尋了 SO - 發現了許多相同的問題,儘管沒有一個答案有幫助。
我已經建立了一堆網站,之前沒有遇到過這個問題。
本質上,我的腳本包會為我的 javascript 文件夾中的每個文件生成 404。
我的結構(目前,我已經改變了很多!)看起來像這樣:
我這樣做是為了保證 ASP.Net 不會更改順序 - 我可以確保某些腳本領先於其他腳本。這就是我一直這樣做的方式,並且通常效果很好。
我的捆綁腳本 - 目前 - 是:
public static void RegisterBundles(BundleCollection bundles) { bundles.FileSetOrderList.Clear(); // stlyes StyleBundle cssBundle = new StyleBundle("~/bundles/css"); cssBundle.IncludeDirectory("~/content/css", "*.css", true); bundles.Add(cssBundle); //scripts ScriptBundle jsBundle = new ScriptBundle("~/bundles/jscript"); jsBundle.IncludeDirectory("~/content/javascript", "*.js", true); bundles.Add(jsBundle); }我已經嘗試了一大堆虛擬路徑。
我的 CSS 載入完美。我的 Js - 我得到一個 404 的列表;每個 */js 文件一個。
有任何想法嗎?
我的控制台看起來像這樣 - 這也告訴我
bundles.FileSetOrderList.Clear();實際上並沒有清除它的列表,否則我會在 angular 之前使用 jquery(這是我的意圖)
更新
如果我
BundleTable.EnableOptimizations = true;在我的捆綁包中,那麼它都是捆綁的,縮小的並且可以工作 - 雖然這對於開發調試來說很糟糕 - 到底是什麼阻止它在調試模式下工作?!
這篇文章似乎描述了相同的問題ASP.Net MVC 5 子目錄捆綁問題,並且是捆綁框架版本 1.1.1 的已知問題。
如果您不想降級或升級到可以使用此功能的版本,您始終可以選擇將文件顯式添加到您想要首先出現的包中。假設您將文件放在同一個文件夾中。
/javascript/lib/ascript.js /javascript/lib/ascript2.js /javascript/lib/jquery.js /javascript/lib/yscript.js您可以首先通過 Include() 明確您想要的文件,然後仍然通過 IncludeDirectory() 將其余文件放在一起。
bundles.Add(new ScriptBundle("~/bundles/jscript").Include( "~/javascript/lib/jquery.js", .IncludeDirectory("~/javascript/lib", "*.js")如果首先顯式添加了 jQuery.js,則捆綁非常智能,不會重複包含 jQuery.js。同樣,如果您希望仍將它們保留在子文件夾中,則可以對各種子目錄進行多次 .IncludeDirectory 呼叫。

