2013-09-22 36 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角色。