IIS应用程序池回收期间调试应用程序行为

时间:2010-09-22 07:16:37

标签: c# iis application-pool

我有一个用C#编写的Web服务。 在游泳池回收过程中,它表现得相当奇怪。

如果我配置一个具有5个工作进程的池,它应该在100个请求之后回收(在生产中它实际上是10000但是没关系)。我得到了每个进程的前100个(即500个请求)的正确响应,但之后一些请求返回了一个不正确的结果(我也得到了超时但这可以正常,因为这个过程正在回收)。

由于这些不正确的结果似乎发生在循环之后,当服务启动时,很难连接调试器并看看会发生什么(因为调试器在循环发生时被释放)。

所以我的问题是: 1.有人知道调试此类事情的好方法吗

编辑:2。碰巧知道可能出错的事情(服务在请求之间没有状态信息) - 我通过附加调试器并幸运地看到异常(在全局异常中捕获)找到了错误处理程序 - 上帝,我讨厌那些):但问题仍然存在。是否有一种比附加调试器更简单的方法,希望您能及时查看错误。

2 个答案:

答案 0 :(得分:0)

你应该说清楚什么是不正确的结果。如果它不是.NET错误,您应该检查您的代码并在您自己的代码上添加一些应用程序级别的日志记录。

调试器只有在您没有其他任何内容可以使用时才能提供帮助。

答案 1 :(得分:0)

我最终做的(现在),是删除大多数“半全局”try / catch / do-nothing处理程序,然后写一个SoapExtension来处理“Unhandled Exceptions”,并将所有信息我可以走近。

我从Jeff Atwood关于CodeProject的文章中获得了大部分灵感:http://www.codeproject.com/kb/aspnet/ASPNETExceptionHandling.aspx

它与附加调试器并不完全相同,但现在必须这样做。