4

我正在尝试使用 ASP.net 健康监控来记录来自 asmx Web 服务的未处理异常。我在 web.config 中启用了运行状况监控,但它没有记录任何内容。运行状况监控是否适用于 asmx Web 服务?我用谷歌搜索,似乎其他人也问过同样的问题,但从未得到明确的答案。

4

5 回答 5

9

请不要发布回复,除非它回答了所提出的问题。对问题以外的问题的一半答案会使读者感到困惑。运行状况监视与“真正未处理的”ASP.NET 异常或 Application_Error 事件无关。

答案是不。我已经对此进行了一些研究,出于某种原因,Web 方法中引发的异常从未提供给健康监控提供者。看来您必须抓住它们并自己处理。

于 2009-04-02T08:44:49.283 回答
1

未处理异常的正常解释与 Tom 所指的那些之间存在差异。汤姆指的是真正未处理的异常,这将杀死你的 w3wp.exe 进程(在它有机会记录它之前),正如我在这里写的博客: http ://www.improve.dk/blog/2008 /04/07/spawning-threads-in-aspnet-can-be-dangerous

正常未处理的异常将导致异常发生并向用户/被调用者显示错误页面。但是,它不会使您的 w3wp.exe 进程崩溃。这些异常应该由运行状况监控来处理。

于 2008-10-09T20:24:14.377 回答
1

在 Global.asax 中,如果您使用 Visual Studio 自动生成的,您可以将代码添加到 Application_Error 方法以处理异常并以您选择的任何方式记录它们。您还可以覆盖 Init 方法并为类的错误事件添加事件处理程序。

在任何一种情况下,您都只会得到一个无用的普通 EventArgs 对象,但您可以使用 HttpContext.Current.Server.GetLastError() 来获取发生的异常。

正如另一张海报所提到的,这可能无法捕获由异步运行的委托、您自己启动的线程或使用 Page.RegisterAsyncTask() 创建的异步页面任务引发的异常。在这些方面,您始终需要确保实现具有异常支持,以便可以捕获异常并且 IIS 工作进程不会中止。

于 2008-10-23T03:06:09.613 回答
0

它不起作用,因为未处理的异常没有在任何类型的 try/catch 中运行。因此,它将无法记录它。看看这篇博文:http: //blogs.msdn.com/tom/archive/2007/12/04/unhandled-exceptions-causing-asp-net-to-crash-in-net-2-0。 aspx

于 2008-10-09T14:55:33.087 回答
0

CALM产品应该在这种情况下工作;如果不是,请告诉我——我写的 ;-)

于 2008-10-13T03:38:14.250 回答