138

我的所有应用程序都运行良好,但突然 IIS 下的所有站点都没有加载 css、图像、脚本。它重定向到登录页面。

如果我登录它工作正常。例如 mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

在我的本地计算机上,无需登录即可正常工作。

4

24 回答 24

202

问题可能是 IIS 不提供静态内容,您可以在此处进行设置: 在此处输入图像描述

来源:http ://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/

视窗 10:

上述对话框的 windows 10 版本

于 2014-02-12T04:45:09.473 回答
197

我遇到了同样的问题,当我在 Windows Server 2012 R2 上的 IIS 8.5 中的 ASP.Net 4.5 中安装我的 Web 应用程序时,未经身份验证的页面不会加载 CSS、JS 和图像。

  1. 我安装了静态内容角色
  2. 我的 Web 应用程序位于 IIS 的 wwwroot 文件夹中,并且所有 Windows 文件夹权限都完好无损(默认权限,包括 IIS_IUSRS)
  3. 我为所有包含 CSS、JS 和图像的文件夹添加了授权。
  4. 我在 Windows 共享上有 Web 应用程序文件夹,所以我按照@imran-rashid 的建议删除了共享

然而,似乎没有什么能解决问题。最后我尝试将匿名用户的身份设置为 App Pool Identity 并开始工作。

单击身份验证功能 编辑匿名身份验证 更改应用程序池标识

我敲了几个小时的头,希望这个回应能为我的开发者伙伴们省去痛苦。

我真的很想知道为什么这是有效的。有什么想法吗?

于 2015-04-02T10:53:40.873 回答
20

我有一个类似的错误,我的控制台看起来像这样:

错误

我的问题是我在一个子文件夹中运行我的网站,因为该公司使用一个顶级域而没有子域。像这样:

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/)。

于 2016-11-14T13:27:14.507 回答
18

尝试从您的web.config中删除staticContent部分。

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>
于 2016-06-29T13:34:54.943 回答
15

这可能无法回答您的问题,但我一直在用新的 IIS 安装遇到相同的症状。CSS、JS 和图像没有出现。是由于 IIS 7.5 中未安装“静态内容”角色。

于 2013-07-30T17:17:01.323 回答
8

您可能在 web.config 中启用了 Windows 身份验证。在本地计算机上,您的 Windows 凭据会自动传递并且可以正常工作。在实时站点上,您被视为匿名用户(IE 设置可以控制这一点,但除非您真的知道自己在做什么,否则不要修改它)。

这会导致以下情况:

  • 您需要显式登录。
  • 由于您未通过身份验证,因此不会在登录页面上提供脚本和 CSS 等资源。

这没有被破坏,只是按预期工作,而是“修复”这个:

  • 如果您不想登录,请更改 web.config 中的身份验证类型。
  • 和/或在包含 CSS、图像、脚本等的目录中添加 web.config,指定授权规则。
于 2012-05-09T08:06:14.010 回答
7

这是Windows权限问题,我移动了它继承错误权限的文件夹。当我移动到 wwwroot 文件夹并向 iis 用户添加权限时,它开始正常工作。

于 2012-11-28T22:59:47.370 回答
6

将此添加到您的 web.config

<location path="Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
于 2012-05-09T08:15:39.433 回答
6

在 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>
于 2012-05-09T08:19:51.583 回答
5

这是一个身份验证问题。就我而言,它通过以下步骤解决: 1- 转到 IIS 管理器,在左侧窗格中,展开服务器根目录并从站点节点中选择您的 Web 应用程序。2- 在主屏幕中,转到 IIS 部分并选择身份验证。3-启用匿名身份验证。4- 然后,选择 Edit 并将 Edit Anonymous Authentication Credentials 设置为 Application pool identity。

匿名身份验证凭证

于 2020-01-12T06:14:13.800 回答
4

当 IIS 不呈现静态内容(如 JS、CSS、图像文件)时,会出现此问题。

要解决此问题,您需要执行以下步骤:

转到控制面板 > 打开或关闭 Windows 功能 > Internet 信息服务 > 万维网服务 > 通用 HTTP 功能 > 静态内容。

确保打开静态内容。

答对了。你完成了。硬重新加载页面,您将能够看到所有静态内容。

于 2020-04-09T07:39:39.770 回答
3

对我来说添加这个web.config解决了问题

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" >
      <remove name="UrlRoutingModule"/>    
    </modules>
</system.webServer>
于 2016-01-17T15:49:15.750 回答
2

我一小时的痛苦是由于在 web.config 中定义 MIME 类型。我需要这个用于开发服务器,但本地 IIS 讨厌它,因为它重复了 MIME 类型……一旦我从 web.config 中删除了这些,js、css 和图像未加载的问题就消失了。

于 2017-07-29T22:49:19.197 回答
1

过去,在使用生产站点的副本时,在 localhost 测试环境中开发站点时,我发现一个建议很有帮助。确保注释掉规范标签:

  <!--<base href="http://www.example.com/">//-->
于 2016-05-07T07:02:24.490 回答
1

就我而言,

IIS 可以加载所有内容localhost,但无法加载我的模板app.tag文件192.168.0.123

因为.tag扩展名不在列表中。

IIS MIME 类型

于 2015-12-17T11:04:39.703 回答
1

要解决这个问题:

转到 Internet 信息服务 (IIS)

单击您尝试加载图像的网站

在 IIS 部分下,打开身份验证菜单并启用 Windows 身份验证。

于 2016-01-06T14:29:24.073 回答
1

如果您尝试了以上所有解决方案,仍然有问题,请考虑使用 ASP.NET 的 ResolveClientUrl() 方法。

Example 的脚本:

而不是使用

<script src="~/dist/js/app.min.js" ></script>

使用方法

<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>

这是我的解决方案,适用于我正在帮助的朋友!

于 2017-06-07T17:47:00.193 回答
1

我有同样的问题。对我来说,这是由于在 IIS 的服务器级别将 Cache-Control 标头设置为无缓存、无存储。因此,对于我的应用程序,我必须将以下内容添加到我的 web.config 中:

<httpProtocol>
    <customHeaders>
        <remove name="Cache-Control" />
    </customHeaders>
</httpProtocol>
于 2019-02-01T09:02:07.743 回答
0

造成这种情况的一个可能原因是您的应用程序希望在端口 443(标准 SSL 端口)上运行,而端口 443 已在使用中。我曾多次遇到过这种情况,开发人员试图在 Skype 在他们的计算机上运行时运行我们的应用程序。

令人难以置信的是,Skype 在端口 443 上运行。在我看来,这是一个可怕的设计缺陷。如果您看到您的应用程序试图在 444 而不是 443 上运行,请关闭 Skype,问题就会消失。

于 2016-03-09T15:55:12.583 回答
0

app.UseStaticFiles();在 Configure 方法的 starup.cs 中添加了这段代码,而不是固定的。

并检查您对此文件夹的权限。

于 2018-10-31T06:16:37.887 回答
0

在我的情况下,当我的 javascript、png 或 css 文件都没有被加载时,我尝试了上面的大部分答案,但似乎没有一个能解决问题。

我终于找到了“请求过滤器”,实际上必须添加 .js、.png、.css 作为启用/接受的文件类型。

一旦我做了这个改变,所有文件都被正确地提供了。

于 2020-02-19T17:13:12.750 回答
0

对于图像使用

@Url.Content("~/assets/bg4.jpg")

在 Style 上使用这个

style="background-image:url(@Url.Content("~/assets/bg4.jpg"))
于 2018-11-21T15:02:58.023 回答
0

如果您在浏览器控制台中看到 403 错误,请检查您的 MVC 捆绑配置。捆绑包名称不应与项目中的任何现有文件夹名称匹配。

例如。

bundles.Add(new StyleBundle("~/Content/css")...

...如果文件夹结构$(ProjectDir)\Content\css存在于您的项目中,则会导致 IIS 出现问题,因为它会尝试在现有文件夹中查找不存在的捆绑内容。

相反,只需使用类似的东西:

bundles.Add(new StyleBundle("~/Content/cssbundle")...
于 2020-03-26T23:14:21.223 回答
0

我遇到了完全相同的问题,尝试了所有建议,但一无所获。打扰了我几个小时。原来我的 ISP 由于某些原因阻止了端口 80。

建议:检查您的流量。确保端口 80 在本地(即防火墙)和外部都有效。

于 2020-04-20T05:13:31.123 回答