【问题标题】:Why would I get server error 500 sporadically?为什么我会偶尔收到服务器错误 500?
【发布时间】:2013-09-20 17:34:34
【问题描述】:

我有一个已经运行多年的网络服务。今天,有人告诉我它给出了服务器错误 500。我检查了过去几个月的服务器日志,似乎 99% 的服务调用的状态为 200,然后现在每隔 500 次并再次为事情增添趣味。服务器日志本身有点难以阅读,所以我尝试在不更改任何重要内容的情况下稍微减少它。

这是服务器日志的摘录:

2013-09-16 09:58:19 <Server IP> GET /WebServicePath/WebService.asmx - 80 - <Server IP> <User Agent String> 200 0 0 874
2013-09-16 09:58:22 <Server IP> GET /WebServicePath/WebService.asmx op=MyFunction 80 - <Server IP> <User Agent String> 200 0 0 203
2013-09-16 09:58:35 <Server IP> POST /WebServicePath/WebService.asmx/MyFunction - 80 - <Server IP> <User Agent String> 500 0 0 437
2013-09-16 09:58:42 <Server IP> POST /WebServicePath/WebService.asmx/MyFunction - 80 - <Server IP> <User Agent String> 500 0 0 0
2013-09-16 09:58:53 <Server IP> POST /WebServicePath/WebService.asmx/MyFunction - 80 - <Server IP> <User Agent String> 200 0 0 499
2013-09-16 09:59:05 <Server IP> POST /WebServicePath/WebService.asmx/MyFunction - 80 - <Server IP> <User Agent String> 200 0 0 203
2013-09-16 09:59:11 <Server IP> POST /WebServicePath/WebService.asmx/MyFunction - 80 - <Server IP> <User Agent String> 200 0 0 187
2013-09-16 09:59:16 <Server IP> POST /WebServicePath/WebService.asmx/MyFunction - 80 - <Server IP> <User Agent String> 200 0 0 296
2013-09-16 10:03:17 <Server IP> POST /WebServicePath/WebService.asmx/MyFunction - 80 - <Server IP> <User Agent String> 500 0 0 15

HTTP 状态是从右数第四个数字。

服务器是 IIS7,使用的用户代理字符串是这样的:

Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/5.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729)

我检查了事件查看器在获得 500 时记录的任何内容,但一无所获。

我发现很多人在新部署的服务上收到服务器错误 500 的例子,而且他们通常有组装问题。但到底为什么它只是随机给出 500 而否则就可以了?

【问题讨论】:

  • 为什么这些错误是随机的?首先要做的是在发生错误时记录更多信息。 This link 可能有用。
  • 我也收到了。很想知道你有没有想过这个。
  • @JordanParker 在我的情况下,令人惊讶的是它竟然是文件权限。该服务将使用连接的 AD 用户访问特定文件夹,这对一个离岸办事处的两个用户来说是个问题。我通过删除该依赖项来修复它,但可以通过向 Web 服务用户授予管理员权限并始终使用该权限,或者向 AD 用户添加权限来修复它。我很失望原来它是如此平凡;)
  • 感谢@CobusKruger!我想这对我来说可能是相似的。我真的很感谢验尸。 :)

标签: asp.net iis iis-7


【解决方案1】:

500 HTTP Status 代码仅表示 Internal Error。这意味着 Web 应用程序抛出了任何类型的未捕获异常。

这可能是由于代码获得意外值的任何问题。所以,只要知道抛出 500 就没什么可做的了。

通常情况下,在 ASPNET 应用程序下的事件查看器(应用程序日志)中会抛出一些东西。

应用程序日志记录(NLog、Log4Net、ELMAH)通常在进程顶部有某种包罗万象的功能,以记录异常的确切类型和消息。这是您需要进一步调查的信息类型。

【讨论】:

  • 我已经在同一时间检查了应用程序日志是否有错误,但没有结果。我会查看 ASPNET - 也许它不会立即被记录?很奇怪。
猜你喜欢
  • 1970-01-01
  • 2020-01-08
  • 2021-04-07
  • 2014-09-17
  • 1970-01-01
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多