2012-03-05 126 views
4

我已經部署了一個用ASP.Net MVC 4編寫的小型Web應用程序。我們已經正確地安裝了JS/CSS捆綁包,它們在本地很好地工作。問題是,當我部署到IIS 6服務器捆綁似乎不工作。 js/css不下載,當我嘗試去腳本中的js鏈接時,我得到了一個404.ASP.Net MVC JS/CSS捆綁在部署時不起作用

有沒有人將IIS 4部署到MVC 4,並有這項工作?

+0

我想這將是一個路由問題,我相信你必須改變路由設置在IIS6上運行MVC,恐怕我沒有具體的細節要儘管:( – dougajmcdonald 2012-03-05 17:19:40

回答

3

問題在於,我們作爲配置爲ASP.Net 2.0的默認網站下的ASP.Net 4.0配置的虛擬目錄運行。

我們創建了一個新網站,並將其設置爲asp.net 4.0,並且所有工作都完美無缺。根據Haacked上的這篇文章,無擴展網址現在應該只適用於大多數IIS 6實例。

2

的束通過擴展名的URL提供服務,如:

IIS 6不支持擴展名的URL外的箱子。當它遇到以/js/css結尾的網址時,它完全不知道它必須將此url與aspnet_isapi.dll處理程序(ASP.NET)關聯起來。

您可以閱讀Phil Haack的blog post,其中他解釋瞭如何爲ASP.NET MVC配置IIS 6以啓用不擴展的URL。這是關於ASP.NET MVC 3的,但是對於ASP.NET MVC 4也是如此。

哦,你可能會考慮升級到默認具有此功能的IIS 7.0+,當在集成管道模式下運行時。

+1

該鏈接假設你有一個擴展名,如.axd這是URL的一部分。儘管如此,捆綁包仍然是無法擴展的,但他所說的不起作用。我們已經有一個通配符映射設置,它也沒有幫助。 – 2012-03-05 18:03:31

+0

@ShaneCourtrille,不幸的是,目前我無法訪問IIS 6框來測試此功能,但我認爲通過正確配置無延伸URL可以實現這一點。也許你可以嘗試在http://serverfault.com上提出你的問題,因爲你的問題似乎更多地與服務器配置相關而不是編程。 – 2012-03-05 18:05:35

+0

不,不幸的是,只要有擴展名也不適用於我。我還沒有找到這個解決方案。 – 2012-05-14 05:19:28

0

地雷問題發生在App_Start的BundleConfig.cs文件中。我BindleConfig.cs文件以前看起來像下面

bundles.Add(new ScriptBundle("~/Scripts/ui-js").Include(
            "~/Scripts/ui-js/jquery.min.1.11.1.js" 
            , "~/Scripts/ui-js/bootstrap.min.js" 
            , "~/Scripts/ui-js/bootstrap-slider.js" 
            , "~/Scripts/ui-js/bootstrap-lightbox.js" 
            , "~/Scripts/ui-js/common-script.js" 
            , "~/Scripts/ui-js/html5.js" 
            , "~/Scripts/ui-js/jquery.colorbox.js" 
            , "~/Scripts/ui-js/respond.src.js" 
            , "~/Scripts/ui-js/angular.min.js" 
            , "~/Scripts/ui-js/bootstrap.js" 
            ,"~/Scripts/ui-js/jRate.min.js" 
            , "~/Scripts/ui-js/jcrop.min.js" 
            )); 

我的佈局頁有

@Scripts.Render("~/Scripts/ui-js") 

谷歌上搜索我找到了解決辦法,你不能使用相同的文件夾結構新ScriptBundle()虛擬後路徑。

所以我在上面改變這種

bundles.Add(new ScriptBundle("~/Scripts/ppScript").Include(
            "~/Scripts/ui-js/jquery.min.1.11.1.js" 
            , "~/Scripts/ui-js/bootstrap.min.js" 
            , "~/Scripts/ui-js/bootstrap-slider.js" 
            , "~/Scripts/ui-js/bootstrap-lightbox.js" 
            , "~/Scripts/ui-js/common-script.js" 
            , "~/Scripts/ui-js/html5.js" 
            , "~/Scripts/ui-js/jquery.colorbox.js" 
            , "~/Scripts/ui-js/respond.src.js" 
            , "~/Scripts/ui-js/angular.min.js" 
            , "~/Scripts/ui-js/bootstrap.js" 
            ,"~/Scripts/ui-js/jRate.min.js" 
            , "~/Scripts/ui-js/jcrop.min.js" 
            )); 

而且在我的佈局頁我把它叫做是

@Scripts.Render("~/Scripts/uiScript") 

注:你需要做同樣的事與你的CSS和Modernizr的捆綁太:)