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 应用程序中加载?