【发布时间】:2010-09-17 02:19:52
【问题描述】:
ASP.NET ASMX 服务偶尔会引发异常。但是, global.asax Application_Error 方法似乎没有捕捉到它们。问题是,如何配置全局错误处理程序来捕获和记录这些异常?
【问题讨论】:
-
您是否尝试过在 WebMethods 中使用 try/catch?
ASP.NET ASMX 服务偶尔会引发异常。但是, global.asax Application_Error 方法似乎没有捕捉到它们。问题是,如何配置全局错误处理程序来捕获和记录这些异常?
【问题讨论】:
ASMX Web 服务的基本问题(这不是问题)是服务层后面的任何异常都会作为 SOAP 异常抛出给客户端。您需要捕获 SOAP 异常,然后在那里查找内部异常。
更好更简洁的方法是在应用程序中实现 SOAP 处理程序。通过此序列化 SOAP 异常并在客户端反序列化它。这样您就可以完全控制异常流,而不是 .net 框架。
HTH
【讨论】:
是 ASMX 还是 AJAX JavaScript 引发了异常?
如果是 Javascript,您需要将异常处理写入您的 JS,然后将其推送回服务器以在您的错误数据存储中进行跟踪——可能通过对您的网络服务的另一个调用。
如果是 ASMX,那么它可能会被您的 Application_Error 捕获,但由于 ASMX 返回 XML 或 JSON,除非您正在寻找它,否则它不一定会显示在您的 UI 上。
【讨论】:
客户端我将简单地将您对服务的调用包装在 JavaScript 中。 在服务器端,错误应该作为一个记录在你的服务器日志中。 http 500 错误
【讨论】: