IIS中未加载CSS,图像,JS


126

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

如果我登录,效果很好。例如mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

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


错误的标签,不是真正的问题……
Renatas M.

3
回滚到标记版本,因为我我知道是什么原因导致了这种行为,并且标记是相关的。如果没有,我将投票关闭。
蒂姆·梅多拉

我已经尝试了所有答案,但此Web配置没有问题。我认为这是IIS的问题,因为在我部署一个对iis都有效的应用程序之前,所有站点都工作正常
Imran Rashid

@ImranRashid-此站点是否继承了IIS中另一个站点的设置?
蒂姆·梅多拉

@Tim Medora-先生,它不是从其他站点继承的。
伊兰·拉希德

Answers:


185

问题可能是IIS不提供静态内容,您可以在此处设置: 在此处输入图片说明

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

Windows 10:

Windows 10版本的上述对话框


2
我遇到了类似的问题,意识到这是一个安装问题,但是启用静态内容似乎已解决了该问题!
ife labolz 2014年

5
这节省了我的培根,您会认为默认情况下启用了此功能,但在Windows 10上却未启用。
贾斯汀

3
me脚,默认情况下未选中。
RayLoveless

3
@RayLoveless我认为很me脚的是,MVC坚决依赖此IIS功能,以使静态内容能够在MVC中工作。我认为他们不应该如此耦合。也许.NET Core将解决此问题。:p
Matt Kocaj

2
在距离上一次的两年之后,我们再次被同样的答案救了。
埃里克·吴

176

我遇到了同样的问题,当我在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. 我将Web应用程序文件夹放在Windows共享上,因此按照@ imran-rashid的建议删除了共享

然而,似乎没有什么能解决这个问题。最后,我尝试将匿名用户的身份设置为“应用程序池身份”,然后它开始工作。

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

我敲了几个小时的头,希望这种回应能为我的开发者们免除痛苦。

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


1
这对我也有用。我相信这是因为“特定用户”没有权限访问应用程序池标识所在的文件夹位置。
dcinadr 2015年

4
几个小时 ?我花了超过4个时间。谢谢上帝,它帮助了我:)
铁托

3
共享wwwroot文件夹后,突然出现了这个问题。您的解决方案已解决。感谢您抽出宝贵的时间来添加它以及细节。
资源

1
传说!非常感谢
David

1
这是我第二次搜索您的帖子,因为它现在为我节省了两次。如果可以的话,我会给你100倍的赞成票。使用Umbraco-使用Documents \ Visual Studio 2013 \ Projects设置了我的本地IIS-已添加CPUName\IIS_IUSRS,但仍然无法加载。再次感谢!
罗伯·斯科特

18

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

错误

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

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


1
投票。我遇到了这个问题,该应用没有在舞台上加载,而是在生产上加载。我也将@ Url.Content()与〜/一起使用。尚未经过生产测试,但我认为它将起作用
Kross

17

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

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

删除staticContent有效,但是现在我所有的字体都是404吗?
Rajesh Sivasankaran'2

我不是专家,但是您可能需要通过IIS管理器在网站属性的HTTP标头选项卡中为字体添加正确的MIME类型声明。
intrepidis

1
这为我解决了问题,因为我在开发中有一些.woff文件条目,但是在生产中,需要对相同的设置进行调整
guideX 2015年

感谢intrepidis,就我而言,您的建议对我有用。干杯!
user752746

15

这可能无法回答您的问题,但是在安装新的IIS时,我一直以相同的症状震惊。CSS,JS和图像未显示。是由于IIS 7.5中未安装“静态内容”角色。


您可能有不同的问题,而我的问题是,当我从inetpub中移动目录时,恢复了我的问题后,它删除了权限。
Imran Rashid

7

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

这将导致以下情况:

  • 您需要显式登录。
  • 由于未经身份验证,因此无法在登录页面上提供脚本和CSS之类的资源。

这没有坏,只是按预期工作,而是要“修复”此问题:

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

身份验证模式是窗体不是窗口?应用程序Web配置文件覆盖机器配置?IIS中是否有任何设置导致此问题?
伊兰·拉希德

表单身份验证还将触发登录提示,并阻止提供脚本和图像之类的资源。有关需要对web.config进行的特定更改,请参阅其他答案。在IIS中保存设置将修改Web配置。
蒂姆·梅多拉

我自己解决。当我在网络上共享wwwroot文件夹时出现问题。更改目录的权限。当我取消共享并将权限设置为默认时。它解决了:)谢谢蒂姆
伊姆兰·拉希德

6

将此添加到您的web.config

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

路径是相对的,有时添加根可以解决此问题。尝试将路径设置为"~/Images"
StuperUser 2015年

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>

6

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


1
我有同样的问题,只是从移动项目文件desktopwwwroot 文件夹中,另外我已经添加完全控制网络服务,这是关系到应用程序池。
mihkov

3

对我来说,将其添加到已web.config解决的问题中

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

2

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


很难相信它可以是重复的MIME类型!我搜寻了至少一个小时,尝试使用不同的用户权限等,但最终在我的web.config中被复制了MIME:-|
亚伦·休顿

2

这是身份验证问题。就我而言,它可以通过以下步骤解决:1-转到IIS管理器,在左窗格中,展开服务器根目录,然后从“站点”节点中选择Web应用程序。2-在主屏幕中,转到IIS部分,然后选择身份验证。3-启用匿名身份验证。4-然后,选择编辑,并将编辑匿名身份验证凭据设置为应用程序池标识。

匿名身份验证凭证


我遵循相同的步骤,问题得到解决。感谢Alireza。
Arvind Gautam

1

就我而言

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

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

IIS MIME类型


1

要解决此问题:

转到Internet信息服务(IIS)

单击您要在其上加载图像的网站

在“ IIS”部分下,打开“身份验证”菜单,然后同时启用“ Windows身份验证”。


1

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

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

1

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

脚本示例:

而不是使用

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

使用方法

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

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


1

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

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

0

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

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




0

就我而言,当我的javascript,png或css文件都没有加载时,我尝试了上面的大多数答案,但似乎都没有成功。

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

进行此更改后,所有文件都将得到正确处理。


0

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

例如。

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

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

相反,只需使用类似以下内容的东西:

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

0

当IIS无法呈现静态内容(如JS,CSS,图像文件)时,会发生此问题。

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

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

确保已打开静态内容。

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


0

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

建议:检查您的流量。确保端口80在本地(即防火墙)和外部均可工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.