2010-09-22 95 views
0

我有用C#编写的Web服务。 池回收期间表现得相当奇怪。在IIS应用程序池回收期间调试应用程序行为

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

由于这些不正确的结果似乎在回收后发生,而服务启动时,只需要连接调试器并查看会发生什么(因为在发生回收时调试器会被脱离)就很难。

所以我的问题(S)是/是:
1.不要任何人知道调试这种事情的好方法

编辑:2.硬骨素谁碰巧有什么可能是一个想法错误(服务在请求之间没有状态信息) - 我发现错误,通过附加调试器并幸运地看到一个异常(陷入全局异常处理程序 - 我讨厌那些神):但是这个问题依然存在。有没有比连接调试器更简单的方法,并希望你及时看到错误。

回答

0

我最终做的(现在)是去除大部分“半全局”try/catch/do-nothing处理程序,然后编写一个SoapExtension来处理“未处理的异常”,并转储出所有我可以接近的信息。

我最杰夫·阿特伍德的文章灵感在CodeProject:http://www.codeproject.com/kb/aspnet/ASPNETExceptionHandling.aspx

它不是真的一样安装调试,但将有现在要做的。

0

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

调试器只能帮助你没有别的办法时。

+0

嗯,我得到一个空的结果,格式正确,但没有内容 - 所以很可能是一个空值的地方。代码是大型库的一部分,没有人真正关心正确的日志记录,我不会在成千上万的代码行中散布随机日志语句来确定我的空值正在“创建”的位置(如果这样的事情可以说空值)。至少不能,如果我可以附加调试器,并寻找nullreferenceexception(或类似)。 – 2010-09-22 09:28:26

+0

我个人会捕获异常转储并分析原因。但是对于您来说,当您需要专家时,您可以通过http://support.microsoft.com打开支持案例。 – 2010-09-22 09:35:48