我想用ASP.NET MVC 4 Bundling and Minification功能,請假設我們運行調試模式,因此沒有捆綁,但每個參考僅僅是渲染到單個標籤。當地一切正常:ASP.NET MVC 4捆綁和縮小:在調試模式錯誤路徑與URL重寫
例
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
}
當從視圖中調用@Scripts.Render("~/bundles/jquery")
現在,生成一個類似的標籤:
<script src="/Scripts/jquery-1.8.2.js"></script>
結果是一樣的如果我會這樣寫:
<script src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script>
但是,當我將所有內容部署到互聯網上的測試服務器(仍然使用調試模式)時,有一些網址重寫已啓用,其中我將特定域或子域路由到特定文件夾。
例如,如果域爲sub1.example.com
,則轉發至example.com/__sub1__
,並且在sub2.example.com
的情況下轉發至example.com/__sub2__
等等。當我在瀏覽器中打開sub1.example.com
時,通常不會發生這種轉發,Url不會更改,所有Url仍然可以正常工作,所以使用Url.Content(...)
方法生成的引用也是如此。
但對於一些奇怪的原因,調用@Scripts.Render("~/bundles/jquery")
現在呈現這樣的事情:
<script src="/__sub1__/Scripts/jquery-1.8.2.js"></script>
請注意,「/ SUB1」其中一部分是不應該產生,不會出現部分在呈現的html代碼中的某處並導致404,因爲url重寫轉發失敗。
雖然...
<script src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script>
...仍然呈現正確的相對路徑 「/Scripts/jquery-1.8.2.js」。我從來沒有像重寫這樣的Url其他問題。我不想擺脫這種重寫。
顯然,同樣適用於樣式表。
任何想法我可以嘗試嗎?
這是偉大的得到別人誰是如此深入地參與了答覆,我敢肯定,這就是最準確的答案,我可以得到,謝謝!當我能夠驗證這一點時,我會接受這是正確的答案;-) – thmshd