IIS 的“失败请求跟踪”中未跟踪 HTTP 500 错误

IIS 的“失败请求跟踪”中未跟踪 HTTP 500 错误

我在 IIS7 中创建了一个新网站,并在该网站下添加了一个新应用程序。当我尝试使用位于此新应用程序下的 ASP.NET Web 服务时,我收到 HTTP 500 内部服务器错误。

我查看了事件日志、IIS 日志,并尝试设置“失败请求跟踪”,但似乎什么都没被跟踪到。我已将其设置为检查所有内容、详细错误日志记录和 400-600 范围内的 HTTP 错误。但 FailedReqLogFiles 文件夹下从未记录任何内容。此 IIS 配置中的其他站点似乎可以很好地跟踪失败的请求。

我可以看到该站点的 IIS 日志中记录了 HTTP GET 请求,但它们显然没有什么帮助,因为它们只是显示请求返回了 500 错误。

我已经检查了资源管理器中站点文件夹的权限,并确保已打开匿名访问,并且应用程序池标识也可以访问该文件夹的内容。

有什么想法吗?我是否提供了足够的问题信息?提前感谢您提供的任何帮助或建议。

答案1

使用失败请求跟踪时,您需要设置规则,但必须将其作为单独的步骤打开。在失败请求跟踪中,检查右侧的操作窗格,其中有一个选项可以启用它。这就是我猜测跟踪不起作用的原因。

对于 IIS7 中的任何配置,如果每个应用程序池有 1 个站点,或者所有站点相互信任且站点稳定,我的建议是将匿名身份验证设置为使用应用程序池的身份。这样可以少处理一个用户。然后确保应用程序池身份被授予磁盘权限。

您提到它在子文件夹中不起作用。子应用程序可能具有不同的权限或使用不同的应用程序池。仔细检查正在使用的应用程序池和匿名身份验证设置。

最后,按照 Colin 的建议使用 Process Monitor。可从 www.sysinternals.com 下载。它是免费的,在生产服务器上运行安全,而且 10 分钟内您就能搞清楚。它会准确地告诉您哪个用户被拒绝访问哪个文件夹(或注册表项)。

答案2

你跑过吗进程监控查看 IIS 是否有适当的权限来写入 FRT 日志?

答案3

检查你的 web.config,是否有 impersonate = true?

在这种情况下,在 IIS 中进行匿名访问时,尝试读取 web.config 的是 IIS 匿名用户,而不是应用程序池用户。

答案4

除了上述所有建议之外,您还可以尝试使用 Chrome Dev Tool [按 F12] 来查看是否有任何线索。同样,如果您无法使用 Chrome,也可以在 IE 上尝试此操作 [按 F12]。

https://developer.chrome.com/devtools有关详细信息,请查看网络和控制台区域

相关内容