2013-09-22 66 views
12

我在部署到IIS後將樣式表綁定在一起時出現問題。 我已經創建了一個簡單的解決方案來演示我的問題。IIS部署後風格綁定不起作用(MVC 4)

我用單個控制器和包含「Hello World」字符串的視圖創建了一個簡單的測試項目(VS 2012,MVC 4)。

我創建了一個(測試)CSS內容文件夾下的簡單簡單的顏色變化

Content\helloWorldCss\helloWorldStyle.css 

然後,我已經編輯我的BundleConfig.cs類,並添加路徑到我的CSS爲新的組合:

  bundles.Add(new StyleBundle("~/Content/helloWorldCss").Include("~/Content/helloWorldCss/helloWorldStyle.css")); 

然後,我已經添加了新的捆綁我的_Layout.cshtml

@Styles.Render("~/Content/helloWorldCss") 

當我通過VS(或頁面檢查器)運行我的應用程序時,我的CSS正在成功應用並且一切似乎都正常。然而,當我發佈/部署我的項目到IIS(通過VS),我可以查看我的HTML,但我的CSS沒有被應用。部署後 以下文件存在:

Content\helloWorldCss\helloWorldStyle.css 

真正困擾我的是,當我改變我的_Layout.cshtml,並添加一個「正規」裁判相同的CSS,而不是使用捆綁ref時,CSS的應用發佈後沒有任何問題。

<link href="@Url.Content("~/Content/helloWorldCss/helloWorldStyle.css")" rel="stylesheet" type="text/css" />* 

我會很感激任何幫助和建議。

回答

12

我想你在這裏有一個名字相撞。縮小後,ASP.NET MVC將在http://example.org/Content/helloWorldCss上創建一個文件,並且您已經擁有一個具有相同路徑的文件夾。你可以在重命名你的捆綁包後再試一次嗎?

BundleConfig.cs:

bundles.Add(new StyleBundle("~/Content/helloWorld").Include("~/Content/helloWorldCss/helloWorldStyle.css")); 

_Layout.cshtml:

@Styles.Render("~/Content/helloWorld") 
+0

你是對的。這確實是問題。謝謝! – Omri

+0

這裏的'〜'符號是混淆的主要來源。該符號是定義該包所必需的。這使我認爲它一定是不應該是的文件夾路徑。 :) 謝謝!!幫助過我。 – mrsrizan

6

這是我做的。 IIS配置>認證> RightClickOn匿名驗證>點擊編輯>檢查應用程序池標識

IIS Config>Authentication>RightClickOn Anonymous Auth>Click Edit> Check Application pool identity

+0

這是最簡單的修復和最佳答案。謝謝! –

+0

偉大的修復!爲什麼默認情況下不這樣設置?您應該始終使用IIS應用程序池來確保安全性。謝謝!! –

0

當您使用VS發佈到測試服務器,它使用的默認應用。 對於造型和SimpleMembership工作,你需要:

  1. 在服務器上安裝ASP.NET 4.0。 CMD - CD C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ 類型ASPNET_REGIIS.EXE -ir

  2. 在IIS添加一個ASP.NET 4.0應用程序池。

  3. 將您的網站設置爲使用ASP.NET 4.0作爲應用程序池。

  4. 在SQL Server中添加ASP.NET 4.0安全登錄併爲其創建dbcreate角色。