【问题标题】:IIS 7.5 and Razor Site: 500 errors for CSS and JSIIS 7.5 和 Razor 站点:CSS 和 JS 出现 500 个错误
【发布时间】:2023-03-18 15:03:02
【问题描述】:

由于某种原因,当我将 Razor MVC 网站部署到我的 Windows 2008 R2 服务器时,我收到了 500 个针对所有 CSS 和 JS 的内部服务器错误。我不知道为什么,因为我做了以下事情:

  • 在 IIS 中启用静态内容
  • 启用匿名访问,默认 ID 是应用程序池标识,并授予该标识对文件夹的读/写权限
  • 确保我的静态内容处理程序设置正确

还有什么其他问题?我什至如何调试它以查看实际错误是什么?即使我有一个 Application_Error 处理程序,也没有记录任何内容。并且 IIS 日志没有给我错误信息?

谢谢。

【问题讨论】:

  • 应用程序池是否正确设置为 ASP.NET v4.0 w/集成模式?
  • 自定义应用池,4.0集成。
  • 使用失败的请求跟踪来了解发生了什么:learn.iis.net/page.aspx/266/…
  • 关闭已部署应用程序上的自定义错误,打开调试模式,尝试直接转到您的 CSS 文件之一(mysite.com/Content/Css/styles.css 或任何您的直接链接)并查看黄屏的确切内容死亡之说。我猜 MVC 可能正在尝试“路由”您的静态内容。
  • css 返回一个空白视图,我看到 500 错误。图片显示“图片 X 有错误,无法显示。”

标签: asp.net asp.net-mvc iis razor windows-server-2008-r2


【解决方案1】:

Mime-Types 是我的麻烦

我遇到了同样的问题。我的 css 和 js 没有交付。服务器说内部错误。

我发现我在 iis 的全局设置中添加了 mp4 的 mimetype,并且还在我的一个网站中添加了 mime 类型。 那是个问题。这种 mime 类型只能存在于网站或全局中,不能同时存在。 我删除了全局 mimetype,一切正常。

希望对你们中的一些人有所帮助。

【讨论】:

  • 只需添加相同的问题。谢谢。
  • 在我的情况下,我必须在我的开发机器中添加 .webp 扩展,但是当我将解决方案部署到 Windows Server 2016 时,我得到了问题中描述的错误并转过身来webp 在 IIS 10 上默认设置,所以我从我的 web.config 中删除了它,并且应用程序按预期工作,无需重新安装 IIS
  • 我的问题是相关的,但略有不同。我的 web 配置中的 mime 类型条目导致从根目录继承的 mime 类型无法处理。删除条目解决了问题。
【解决方案2】:

刚刚发现,我已经为 IIS 7.5 添加了 web.config *.woff MIME,所以在 IIS8 上部署时,会导致静态文件错误。从 web.config 中删除后一切正常。

【讨论】:

  • 这也是我的问题。 +1
  • 是的,从 2012 服务器迁移到 2019,您需要删除 <staticContent> <mimeMap fileExtension=".woff2" mimeType="application/font-woff2"/> </staticContent>
【解决方案3】:

我收到了 500 个错误,因为我在下面添加了这个到我的 web.config。删除后,我通过了错误。

<staticContent>
  <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>

【讨论】:

  • 我不知道为什么这被否决了。这与托尼的回答一起指出了一个原因。在我的情况下,我将 woff 和 woff2 mime 类型添加到我的 IIS 实例中,但是在调试不同的 Web 应用程序时,它拒绝加载任何/所有 css 和 js 文件。我检查了该应用程序的 web.config 文件,发现为 .woff 设置了一个 mimeMap。我对此发表了评论,并且很快,该网站提出了 CSS 和 JS。检查 web 配置中的 mimeMap 并查看它们是否真的需要。
  • 我同意,它不应该被否决 - 这个答案可以帮助我找到解决方案(就像@Steve Py 问题是 woff2)。
【解决方案4】:

要排除一种基本权限情况,请尝试以下操作:

  1. 选择您的网站并进入基本设置。
  2. 记下您的网站在哪个应用程序池下运行。
  3. 退出并选择应用程序池节点。
  4. 为您的站点找到应用程序池,并记下该应用程序池在哪个身份(帐户)下运行。

如果帐户是特定的用户身份 -- 换句话说,如果它不是内置帐户(例如 ApplicationPoolIdentity、Network Service、Local System、等)然后:

  1. 启动您的本地用户和组。
  2. 查找并打开本地 IIS_IUSRS 组。
  3. 如果相关帐户不是该组的成员,请将其添加。

【讨论】:

  • 访问被拒绝。我的公司不允许我们编辑用户组。
【解决方案5】:

重新安装 IIS 解决了这个问题。

【讨论】:

  • 您不需要采取上述任何步骤。启用 Web 角色,然后选择 ASP.NET 角色服务就是您所需要的。我怀疑当您第一次启用 Web 角色时,您首先选择了 ASP.NET - 然后选择了 IIS(因为 ASP.NET 依赖于 IS)。按此顺序执行此操作不会获得静态文件处理。通过删除 web 角色并按照我所说的顺序将其添加回来,静态文件就会被提供。
【解决方案6】:

如果您在本地服务器上并出现此错误,请检查您是否缺少任何软件包。捕获 global.asax 中的错误,并在必要时重新加载所有包;

更新包-重新安装

在包管理器控制台中。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2020-06-21
    • 2018-09-30
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 2017-02-24
    • 2015-01-18
    相关资源
    最近更新 更多