我的所有应用程序都运行良好,但突然 IIS 下的所有站点都没有加载 css、图像、脚本。它重定向到登录页面。
如果我登录它工作正常。例如 mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png
在我的本地计算机上,无需登录即可正常工作。
我的所有应用程序都运行良好,但突然 IIS 下的所有站点都没有加载 css、图像、脚本。它重定向到登录页面。
如果我登录它工作正常。例如 mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png
在我的本地计算机上,无需登录即可正常工作。
问题可能是 IIS 不提供静态内容,您可以在此处进行设置:
来源:http ://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/
视窗 10:
我遇到了同样的问题,当我在 Windows Server 2012 R2 上的 IIS 8.5 中的 ASP.Net 4.5 中安装我的 Web 应用程序时,未经身份验证的页面不会加载 CSS、JS 和图像。
然而,似乎没有什么能解决问题。最后我尝试将匿名用户的身份设置为 App Pool Identity 并开始工作。
我敲了几个小时的头,希望这个回应能为我的开发者伙伴们省去痛苦。
我真的很想知道为什么这是有效的。有什么想法吗?
我有一个类似的错误,我的控制台看起来像这样:
我的问题是我在一个子文件夹中运行我的网站,因为该公司使用一个顶级域而没有子域。像这样:
host.com/app1
host.com/app2
我的代码看起来像这样,包含在 localhost 上运行良好但在 app1 或 app2 中运行良好的脚本:
<link rel="stylesheet" type="text/css" href="/Content/css/font-awesome.min.css" />
向 src添加了一个波浪号~
,然后一切正常:
<link rel="stylesheet" type="text/css" href="~/Content/css/font-awesome.min.css" />
~
vs的解释/
:
/
- 网站根~/
- 应用程序的根目录/
将返回站点的根目录 ( http://host.com/
),
~/
将返回应用程序的根 ( http://host.com/app1/
)。
尝试从您的web.config中删除staticContent部分。
<system.webServer>
<staticContent>
...
</staticContent>
</system.webServer>
这可能无法回答您的问题,但我一直在用新的 IIS 安装遇到相同的症状。CSS、JS 和图像没有出现。是由于 IIS 7.5 中未安装“静态内容”角色。
您可能在 web.config 中启用了 Windows 身份验证。在本地计算机上,您的 Windows 凭据会自动传递并且可以正常工作。在实时站点上,您被视为匿名用户(IE 设置可以控制这一点,但除非您真的知道自己在做什么,否则不要修改它)。
这会导致以下情况:
这没有被破坏,只是按预期工作,而是“修复”这个:
这是Windows权限问题,我移动了它继承错误权限的文件夹。当我移动到 wwwroot 文件夹并向 iis 用户添加权限时,它开始正常工作。
将此添加到您的 web.config
<location path="Images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
在 web.config 文件的配置部分使用它:
<location path="images">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="css">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="js">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
当 IIS 不呈现静态内容(如 JS、CSS、图像文件)时,会出现此问题。
要解决此问题,您需要执行以下步骤:
转到控制面板 > 打开或关闭 Windows 功能 > Internet 信息服务 > 万维网服务 > 通用 HTTP 功能 > 静态内容。
确保打开静态内容。
答对了。你完成了。硬重新加载页面,您将能够看到所有静态内容。
对我来说添加这个web.config
解决了问题
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" >
<remove name="UrlRoutingModule"/>
</modules>
</system.webServer>
我一小时的痛苦是由于在 web.config 中定义 MIME 类型。我需要这个用于开发服务器,但本地 IIS 讨厌它,因为它重复了 MIME 类型……一旦我从 web.config 中删除了这些,js、css 和图像未加载的问题就消失了。
过去,在使用生产站点的副本时,在 localhost 测试环境中开发站点时,我发现一个建议很有帮助。确保注释掉规范标签:
<!--<base href="http://www.example.com/">//-->
要解决这个问题:
转到 Internet 信息服务 (IIS)
单击您尝试加载图像的网站
在 IIS 部分下,打开身份验证菜单并启用 Windows 身份验证。
如果您尝试了以上所有解决方案,仍然有问题,请考虑使用 ASP.NET 的 ResolveClientUrl() 方法。
Example 的脚本:
而不是使用
<script src="~/dist/js/app.min.js" ></script>
使用方法
<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>
这是我的解决方案,适用于我正在帮助的朋友!
我有同样的问题。对我来说,这是由于在 IIS 的服务器级别将 Cache-Control 标头设置为无缓存、无存储。因此,对于我的应用程序,我必须将以下内容添加到我的 web.config 中:
<httpProtocol>
<customHeaders>
<remove name="Cache-Control" />
</customHeaders>
</httpProtocol>
造成这种情况的一个可能原因是您的应用程序希望在端口 443(标准 SSL 端口)上运行,而端口 443 已在使用中。我曾多次遇到过这种情况,开发人员试图在 Skype 在他们的计算机上运行时运行我们的应用程序。
令人难以置信的是,Skype 在端口 443 上运行。在我看来,这是一个可怕的设计缺陷。如果您看到您的应用程序试图在 444 而不是 443 上运行,请关闭 Skype,问题就会消失。
我 app.UseStaticFiles();
在 Configure 方法的 starup.cs 中添加了这段代码,而不是固定的。
并检查您对此文件夹的权限。
在我的情况下,当我的 javascript、png 或 css 文件都没有被加载时,我尝试了上面的大部分答案,但似乎没有一个能解决问题。
我终于找到了“请求过滤器”,实际上必须添加 .js、.png、.css 作为启用/接受的文件类型。
一旦我做了这个改变,所有文件都被正确地提供了。
对于图像使用
@Url.Content("~/assets/bg4.jpg")
在 Style 上使用这个
style="background-image:url(@Url.Content("~/assets/bg4.jpg"))
如果您在浏览器控制台中看到 403 错误,请检查您的 MVC 捆绑配置。捆绑包名称不应与项目中的任何现有文件夹名称匹配。
例如。
bundles.Add(new StyleBundle("~/Content/css")...
...如果文件夹结构$(ProjectDir)\Content\css存在于您的项目中,则会导致 IIS 出现问题,因为它会尝试在现有文件夹中查找不存在的捆绑内容。
相反,只需使用类似的东西:
bundles.Add(new StyleBundle("~/Content/cssbundle")...
我遇到了完全相同的问题,尝试了所有建议,但一无所获。打扰了我几个小时。原来我的 ISP 由于某些原因阻止了端口 80。
建议:检查您的流量。确保端口 80 在本地(即防火墙)和外部都有效。