Asp.net

ASP.Net MVC 腳本包導致 404

  • September 14, 2016

我搜尋了 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 呼叫。

引用自:https://stackoverflow.com/questions/25457666