CSS、图像、JS 未在 IIS 中加载

Posted

技术标签:

【中文标题】CSS、图像、JS 未在 IIS 中加载【英文标题】:CSS, Images, JS not loading in IIS 【发布时间】:2012-05-09 07:58:46 【问题描述】:

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

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

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

【问题讨论】:

标记错误,不是真正的问题... 回滚到标记版本,因为我认为我知道是什么导致了这种行为并且标签是相关的。如果没有,我会投票关闭。 这个网络配置没有问题,我已经尝试了所有答案。我认为这是 IIS 的问题,因为在我部署一个应用程序之前所有站点都运行良好,这会影响 iis @ImranRashid - 此站点是否从 IIS 中的另一个站点继承设置? @Tim Medora - 不,先生,它不是从其他站点继承的。 【参考方案1】:

问题可能是 IIS 没有提供静态内容,您可以在此处进行设置:

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

Windows 10:

【讨论】:

我遇到了类似的问题,意识到是安装问题,但启用静态内容似乎已经解决了! 这救了我的培根,你会认为这是默认启用的,但在 Windows 10 上它不是。 跛脚这个默认不勾选。 @RayLoveless 我认为糟糕的是,MVC 强烈依赖于启用此 IIS 功能以使静态内容在 MVC 中工作。我认为他们不应该如此耦合。也许 .NET Core 会解决这个问题。 :p 啊,我们又来了,被同样的答案拯救了,距离上一次已经过去了 2 年。【参考方案2】:

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

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

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

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

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

【讨论】:

这也对我有用。我相信这是因为“特定用户”没有文件夹位置的权限,而应用程序池的身份则在那里。 几个小时?我花了超过 4 个。感谢上帝,它帮助了我 :) 我在共享 wwwroot 文件夹后突然遇到了这个问题。您的解决方案修复了它。感谢您花时间添加它并提供详细信息。 LEG-END!非常感谢 这是我第二次搜索你的帖子,b/c 现在它救了我两次。如果可以的话,我会给你 100 倍的票。正在使用 Umbraco - 使用 Documents\Visual Studio 2013\Projects 设置我的本地 IIS - 添加了 CPUName\IIS_IUSRS 并且仍然无法加载。再次感谢!【参考方案3】:

我遇到了类似的错误,我的控制台看起来像这样:

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

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" />

~/的解释:

/ - 站点根目录 ~/ - 应用的根目录

/ 将返回站点的根目录 (http://host.com/),

~/ 将返回应用程序的根 (http://host.com/app1/)。

【讨论】:

赞成。我遇到了这个问题,该应用程序没有在舞台上加载,而是在生产中加载。我也将 @Url.Content() 与 ~/.未经生产测试,但我认为它会工作【参考方案4】:

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

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>

【讨论】:

删除 staticContent 有效,但现在我所有的字体都是 404? 我不是这方面的专家,但也许您需要通过网站属性的 HTTP 标头选项卡中的 IIS 管理器为您的字体添加正确的 MIME 类型声明。 这解决了我的问题,因为我在开发中有一些 .woff 文件条目,但在生产中相同的设置需要调整 感谢 intrepidis,就我而言,您的建议对我有用。干杯!【参考方案5】:

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

【讨论】:

你可能有不同的问题,我的问题是当我从 inetpub 移动目录时,当我恢复我的问题时它会删除权限。【参考方案6】:

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

这会导致以下情况:

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

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

如果您不想登录,请在 web.config 中更改身份验证类型。 和/或在包含 CSS、图像、脚本等的目录中添加 web.config,指定授权规则。

【讨论】:

认证方式是Forms不是window?应用程序 web 配置文件覆盖机器配置? IIS 中是否有任何设置导致此问题? 表单身份验证还会触发登录提示并阻止提供脚本和图像等资源。有关您需要对 web.config 进行的特定更改,请参阅其他答案。在 IIS 中保存设置将修改 Web 配置。 我自己解决了。当我在网络上共享 wwwroot 文件夹时出现问题。它改变了目录的权限。当我取消共享并将权限设置为默认值时。它解决了:) 谢谢蒂姆【参考方案7】:

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

【讨论】:

我遇到了同样的问题,只是将项目文件从desktop移动到wwwroot文件夹,另外我添加了对网络服务的完全控制,这与应用程序池有关。 嗨 Imran/Mihkov,你能帮我解决这个问题吗? 嗨@MohanrajPeriyannan,答案有解决方案吗?您仍然无法使用上述解决方案解决问题? 嗨@ImranRashid,我无法理解解决方案。您能否为此分享一个演示或屏幕截图。感谢您的回复。【参考方案8】:

将此添加到您的 web.config

<location path="Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

【讨论】:

路径是相对的,有时添加根可以解决这个问题。尝试将路径设置为"~/Images"【参考方案9】:

在 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>

【讨论】:

【参考方案10】:

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

【讨论】:

我按照相同的步骤解决了问题。谢谢 Alireza。【参考方案11】:

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

要解决此问题,您需要按照以下步骤操作:

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

确保开启静态内容。

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

【讨论】:

【参考方案12】:

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

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" >
      <remove name="UrlRoutingModule"/>    
    </modules>
</system.webServer>

【讨论】:

【参考方案13】:

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

【讨论】:

很难相信它可以是重复的 MIME 类型!我搜索了至少一个小时,尝试不同的用户权限等,但最终在我的 web.config 中重复了 MIME:-|【参考方案14】:

就我而言,

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

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

【讨论】:

【参考方案15】:

解决这个问题:

转到 Internet 信息服务 (IIS)

点击您要加载图片的网站

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

【讨论】:

【参考方案16】:

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

  <!--<base href="http://www.example.com/">//-->

【讨论】:

【参考方案17】:

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

示例脚本:

而不是使用

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

使用方法

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

这是我正在帮助的朋友的解决方案!

【讨论】:

【参考方案18】:

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

<httpProtocol>
    <customHeaders>
        <remove name="Cache-Control" />
    </customHeaders>
</httpProtocol>

【讨论】:

【参考方案19】:

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

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

【讨论】:

【参考方案20】:

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

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

【讨论】:

【参考方案21】:

图片使用

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

在样式上使用这个

style="background-image:url(@Url.Content("~/assets/bg4.jpg"))

【讨论】:

【参考方案22】:

在我没有加载任何 javascript、png 或 css 文件的情况下,我尝试了上面的大多数答案,但似乎没有一个能解决问题。

我终于找到了“Request Filters”,实际上不得不添加 .js、.png、.css 作为启用/接受的文件类型。

在我进行此更改后,所有文件都可以正常提供。

【讨论】:

【参考方案23】:

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

例如。

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

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

而只是使用类似的东西:

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

【讨论】:

【参考方案24】:

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

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

【讨论】:

以上是关于CSS、图像、JS 未在 IIS 中加载的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 机器人未在 MessageEmbeds() 中加载图像 url,以前是

我的控制器索引视图的背景图像未在 rails 4 应用程序中加载?

图像未在 Flutter 中加载

NextJs App 在 Azure Web App 中部署时未在 nextjs 公用文件夹中加载图像

CSS未在spring boot应用程序中加载

图像未在 XAMPP 中加载