我已经在 Visual Studio 2008 中构建了一个 Web 服务,并将其部署在运行于 Windows Server 2008 R2 的 IIS 7 上。
它已经经过了广泛的测试,可以正常处理所有错误并使用 log4net 将任何未捕获的错误记录到文件中。
系统通常运行完美,但偶尔(每天 2 或 3 次)会出现故障并破坏应用程序,需要iisreset
让其再次运行。
当故障发生时,我会收到一些随机错误,这些错误被我的捕获全部错误日志捕获,例如:
- 值不能为空。
- 无法从“System.Boolean”类型转换为“System.DateTime”类型。
- 序列不包含任何元素
在我手动执行之前,每次请求时都会引发这些错误iisreset
,但在系统正常运行时看不到这些错误。
Web 服务是无状态的请求-响应应用程序。会话中不存储任何内容。这可能与负载有关,但我对此表示怀疑,因为每分钟只有大约 30 或 40 个请求。
事实证明,这个问题很难追踪。我搞不清楚是什么让 IIS 陷入这种糟糕的状态,以及为什么需要修复iisreset
才能让它重新工作。事件日志中没有报告任何内容。
有人可以建议如何启用更广泛的日志记录以捕获此故障吗?
此外,有人知道可能导致该问题的原因是什么吗?
答案1
我已经自己修复了这个问题。这确实是应用程序的一个错误。
如果您遇到同样的问题,请参阅如何解决此问题的完整说明我在 StackOverflow 上对应的问题和答案。