CSS,图像,JS无法在IIS中加载

时间:2012-05-09 07:58:46

标签: c# asp.net-mvc iis

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

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

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

24 个答案:

答案 0 :(得分:164)

问题可能是IIS没有提供静态内容,您可以在此处设置: enter image description here

  

运行'optionalfeature'命令并确保'Static Content'选项   检查。

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

第三方编辑

我确实碰到了同样的问题。在Windows Server 2016上,您可以

  1. 打开server manager
  2. 点击Add roles and features,然后点击下一步
  3. 选择Role-based or feature-based installation,然后点击下一步
  4. 选择服务器并单击下一步
  5. 打开子树Webserver (IIS)并在
  6. 下面
  7. 打开Webserver并选择
  8. general HTTP-features并验证
  9. 选择
  10. static content或选择它,然后点击下一步
  11. 由于它已经安装在我的服务器上,我重新启动了网站并且F5重新加载了页面 - 这确实有帮助。所有*.js - 文件都与标题Content-Type: application/javascript

    一起发送

答案 1 :(得分:147)

我遇到了同样的问题,当我在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建议的共享
  5. 然而,似乎没有解决问题。最后,我尝试将匿名用户的身份设置为App Pool Identity,然后开始工作。

    Click on the Authentication Feature Edit the Anonymous Authentication Change to App Pool Identity

    我把头撞了几个小时,希望这个回应可以为我的同事们带来痛苦。

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

答案 2 :(得分:16)

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

error

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

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

答案 3 :(得分:14)

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

<ion-list ion-item *ngFor="let elt of Billerstatusstate | merge:Billerstatusnamelst"  >
  {{elt.name}} <button round>{{elt.state}}</button>
</ion-list>    

答案 4 :(得分:14)

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

答案 5 :(得分:6)

将此添加到您的web.config

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

答案 6 :(得分:6)

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

答案 7 :(得分:6)

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

这会导致以下情况:

  • 您需要明确登录。
  • 登录页面上不提供脚本和CSS等资源,因为您未经过身份验证。

这没有打破,只是按预期工作,但要“修复”这个:

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

答案 8 :(得分:5)

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

答案 9 :(得分:3)

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

Anonymous Authentication Credentials

答案 10 :(得分:2)

我在web.config中添加了这个问题解决了问题

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

答案 11 :(得分:2)

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

答案 12 :(得分:1)

就我而言,

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

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

IIS MIME types

答案 13 :(得分:1)

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

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

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

确保已打开静态内容。

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

答案 14 :(得分:1)

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

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

答案 15 :(得分:1)

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

示例脚本:

而不是使用

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

使用方法

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

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

答案 16 :(得分:1)

我在使用生产网站副本时在localhost测试环境中开发网站时发现了一些建议。确保您注释掉规范标记:

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

答案 17 :(得分:1)

解决此问题:

转到Internet信息服务(IIS)

点击您尝试在

上加载图片的网站

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

答案 18 :(得分:0)

我将[root@localhost]# jq -r '.[] | "\(.acc_id),\(.name),\(.s3_path)"' abc.json 166211981,TEST_AE_LI_KEYS_003,opti-port/dcp/ue.1045199007354/11722990697 166211981,TEST_AE_LI_KEYS_001,opti-port/dcp/ue.1045199007354/11724290732 的这段代码添加到了Configure方法的starup.cs中,而不是固定的。

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

答案 19 :(得分:0)

供图像使用

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

在样式上使用此

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

答案 20 :(得分:0)

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

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

答案 21 :(得分:0)

在我的所有javascript,png或css文件都未加载的情况下,我尝试了上面的大多数答案,但似乎都没有成功。

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

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

答案 22 :(得分:0)

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

例如

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

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

相反,只需使用类似的内容:

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

答案 23 :(得分:0)

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

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