2

我想用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其他問題。我不想擺脫這種重寫。

顯然,同樣適用於樣式表。

任何想法我可以嘗試嗎?

回答

1

這是一個當前腳本/樣式助手實現的bug,應該使用1.1版本的alpha-alpha版本來解決這個問題,該版本應該很快就會在10月初發布,因爲它支持使用ASP.NET註冊的VirtualPathProvider已經修復了這個普遍的問題類(正確解析資源路徑)。

+0

這是偉大的得到別人誰是如此深入地參與了答覆,我敢肯定,這就是最準確的答案,我可以得到,謝謝!當我能夠驗證這一點時,我會接受這是正確的答案;-) – thmshd