我已经部署了我的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 事实上,我得到了所有本地文件。
答案 0 :(得分:11)
我也遇到了同样的问题。我的本地服务器IIS配置无法正常工作,但开发服务器工作正常。那段时间必须通过右键单击IIS中的hoted站点将“用户权限”添加到我的Hosed文件夹中。
按照步骤操作。
然后通过“添加用户”面板添加名为IUSER的uesr。
答案 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”。它应该解决这个问题。
这里的原因是您在访问网站内容时未登录,例如样式表或脚本。所以网站没有加载这些内容。如果您通过身份验证,它将加载所有内容。标识值通常是网络服务或本地服务。