在事件日志中未写入任何内容时,如何在IIS 7.5上诊断500 Internal Server Error?


43

我刚刚将更新部署到现有的ASP.NET MVC3站点(已经配置),并且正在收到IIS蓝屏死机说明

HTTP错误500.0-内部服务器错误
该页面无法显示,因为发生了内部服务器错误。

然而; 在应用程序事件日志中没有任何显示,我希望看到该条目的(更多)详细描述。

我该如何诊断该问题?


我在这里遇到了完全相同的问题。以我的经验,如果事件日志为空,则说明未正确将请求路由到工作进程。在我们最近的一次部署中,我们看到该应用程序间歇性地工作,其中大约50%的请求随机失败,并出现500错误,并且日志中没有任何内容。我怀疑部署后发生的AppDomain卸载出了点问题。出于好奇,您是否在生产环境中运行防病毒软件?IIS重置是否可以解决问题(直到下一次部署)?
ShadowChaser

Answers:


41

看一下IIS7的失败请求跟踪功能:

在IIS 7中使用跟踪对
失败的请求进行故障排除对失败的请求跟踪进行故障排除

我要做的另一件事是调整<httpErrors>设置,因为IIS可能会吞噬来自进一步管道的错误消息:

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

如果该网站是用经典ASP编写的,那么请确保打开ASP配置功能中的“向浏览器发送错误”设置:

在此处输入图片说明

最后,如果您使用的是Internet Explorer,请确保已关闭“高级”设置中的“ 显示友好的HTTP错误消息 ”(尽管我怀疑您已经这样做或正在使用其他浏览器)。


2
existingResponse设置为“替换”。谢谢你的提示。
Greg B

这是一个很好的答案,但是如果它包括如何启动ASP配置窗口,则可以对其进行改进。
迈克尔·波特

13

就我而言:

  • 事件日志为空。
  • web.config 没有损坏-通过在本地计算机上使用相同的验证/ inetmgr

最后...

  • 检查IIS日志显示了这样的请求

...Chrome/57.0.2987.133+Safari/537.36 500 19 5 312

关键是:

sc-status sc-substatus sc-win32-status 500 19 5

通过一些谷歌搜索将我指向IIS_USRS没有对该www文件夹的读取权限


2
我在这里找到状态代码列表: support.microsoft.com/en-us/help/943891/…–
sirdank

4

最明显的问题是Web应用程序文件夹上的NTFS权限不正确或为零。因此,请确保为网站提供服务的帐户具有正确的权限。如果没有对Web目录的适当NTFS权限,则放在web.config中的内容无关紧要,因为它将永远不会被读取。

快速检查可以让所有人享有全部权利-如果该网站开始运行,那么您就知道这是一个权利问题,然后可以着手将适当的权利分配给更合适的帐户。


1

如果从IIS6升级,则可能是web.config可以在6上运行的其中之一,但在IIS 7.5上则不行。双击IIS中该网站的所有图标,您可能会看到格式错误(本节必须在其他部分之下...)


0

我在Azure Web应用程序中遇到了同样的问题。在本地调试时,从ajax调用返回的错误消息(JSON)已完全返回到浏览器。但是,一旦部署到Web App,消息就会被吞没,并且我返回了默认的500错误消息。因此,我必须在web.config 标记中将existingResponse值显式设置为。PassThroughhttpErrors

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.