MVC:我已经部署了我的应用程序,但CSS仅在我登录时才有效

时间:2011-03-22 08:47:17

标签: css asp.net-mvc

我已经部署了我的MVC应用程序但是当我从IIS浏览时,我发现表单身份验证似乎阻止了CSS。 这不会发生在我的开发服务器上。 为什么会这样? 我的母版页看起来像这样;

<head id="Head1" runat="server">
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.js" type="text/javascript" language="javascript"></script>
    <script src="http://nje.github.com/jquery-tmpl/jquery.tmpl.js" type="text/javascript"></script>
    <script src="<%=Url.Content("~/Scripts/jquery.form.js")%>" type="text/javascript"></script>
    <!-- note that the order scripts are included in is important -->
    <script src="<%=Url.Content("~/Scripts/jquery.Validate.js")%>" type="text/javascript"></script>
    <script src="<%=Url.Content("~/Scripts/MicrosoftMvcJQueryValidation.js")%>" type="text/javascript"></script>
    <script src="<%=Url.Content("~/Scripts/ConfusedValidation.js")%>" type="text/javascript"></script>
    <script src="<%=Url.Content("~/Scripts/Awesome.js")%>" type="text/javascript"></script>
    <script src="<%=Url.Content("~/Scripts/MicrosoftAjax.debug.js") %>" type="text/javascript"></script>  
    <script src="<%=Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js") %>" type="text/javascript"></script>
    <script src="<%=Url.Content("~/Scripts/jquery.jcacher-1.0.0.min.js")%>" type="text/javascript"></script>
    <link href="<%=Url.Content("~/Content/jquery.ui.autocomplete.css")%>" rel="stylesheet" type="text/css" />

    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/overcast/jquery-ui.css" 
            type="text/css" rel="Stylesheet" class="ui-theme" />

    <link href="<%=Url.Content("~/Scripts/Awesome.css")%>" rel="stylesheet" type="text/css" />

*编辑 * 在Firebug中,我收到了消息; 无法加载以下内容的来源:http://192.168.100.999/Content/Site.css 事实上,我得到了所有本地文件。

6 个答案:

答案 0 :(得分:11)

我也遇到了同样的问题。我的本地服务器IIS配置无法正常工作,但开发服务器工作正常。那段时间必须通过右键单击IIS中的hoted站点将“用户权限”添加到我的Hosed文件夹中。

按照步骤操作。 enter image description here

然后通过“添加用户”面板添加名为IUSER的uesr。

enter image description here

答案 1 :(得分:4)

您是共享主机吗?你的脚本* .js加载吗?如果它确实意味着您的相对路径不好,您可能会使用Url.Content以与.js相同的方式引用您的css文件。

<link href="<%=Url.Content("~/Content/Site.css)%>" rel="stylesheet" type="text/css" />

我建议你看一下SquishIt:http://www.codethinked.com/squishit-the-friendly-aspnet-javascript-and-css-squisher它会结合并最小化你的CSS和javascript以进行浏览器优化。

希望它有所帮助!

答案 2 :(得分:4)

答案是将用户IIS_IUSR的权限分配给部署应用程序的文件夹。一位同事为我发现了这个。我不得不承认我不确定为什么这是必要的,但它解决了这个问题。

答案 3 :(得分:3)

您应明确启用对公开可用资源的匿名访问。执行此操作的方法是使用以下设置在包含公共内容的文件夹中添加web.config:

<configuration>
    <appSettings/>
    <connectionStrings/>
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
</configuration>

它可能适用于开发服务器,因为Windows身份验证意味着您不是匿名的。

答案 4 :(得分:3)

这是权限问题:请为文件夹结构添加BOTH:IIS_USR和IUSR权限

答案 5 :(得分:2)

您只需更改应用程序池标识属性即可。它处于高级设置下 - &gt;身份。从下拉列表中将标识值更改为“ApplicationPoolIdentity”。它应该解决这个问题。

这里的原因是您在访问网站内容时未登录,例如样式表或脚本。所以网站没有加载这些内容。如果您通过身份验证,它将加载所有内容。标识值通常是网络服务或本地服务。

相关问题