IIS部署后样式捆绑不起作用(MVC 4)

时间:2013-09-22 17:26:30

标签: c# css asp.net-mvc-4 iis

在部署到IIS后,我的样式表捆绑存在问题。 我已经创建了一个简单的解决方案来演示我的问题。

我创建了一个简单的测试项目(VS 2012,MVC 4),其中包含一个控制器和一个包含“Hello World”字符串的视图。

我在内容文件夹下创建了一个(测试)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(或Page inspector)运行我的应用程序时,我的CSS成功应用,一切似乎都没问题。但是,当我将项目发布/部署到IIS(通过VS)时,我可以查看我的HTML,但我的CSS未应用。 部署后存在以下文件:

Content\helloWorldCss\helloWorldStyle.css

让我感到困惑的是,当我改变我的_Layout.cshtml并将“常规”引用添加到相同的CSS而不是使用bundle ref时,CSS会在发布后应用而不会出现任何问题。

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

我将非常感谢您的任何帮助和建议。

3 个答案:

答案 0 :(得分:13)

我认为你这里有名字冲突。 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")

答案 1 :(得分:7)

这就是我的意思。 IIS配置&gt;身份验证&gt; RightClickOn匿名身份验证&gt;点击修改&gt;检查应用程序池标识

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

答案 2 :(得分:0)

当您使用VS发布到测试服务器时,它使用defaultAppPool。 要使样式和SimpleMembership工作,您需要:

  1. 在您的服务器上安装ASP.NET 4.0。 cmd - cd C:\ Windows \ Microsoft.NET \ Framework \ 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角色。