【问题标题】:How do I handle exceptions thrown by asmx services?如何处理 asmx 服务引发的异常?
【发布时间】:2010-09-17 02:19:52
【问题描述】:

ASP.NET ASMX 服务偶尔会引发异常。但是, global.asax Application_Error 方法似乎没有捕捉到它们。问题是,如何配置全局错误处理程序来捕获和记录这些异常?

【问题讨论】:

  • 您是否尝试过在 WebMethods 中使用 try/catch?

标签: asp.net error-handling


【解决方案1】:

ASMX Web 服务的基本问题(这不是问题)是服务层后面的任何异常都会作为 SOAP 异常抛出给客户端。您需要捕获 SOAP 异常,然后在那里查找内部异常。

更好更简洁的方法是在应用程序中实现 SOAP 处理程序。通过此序列化 SOAP 异常并在客户端反序列化它。这样您就可以完全控制异常流,而不是 .net 框架。

HTH

【讨论】:

  • 你能给我指出正确的方向吗?我目前正在尝试创建一个全局异常处理程序,该处理程序不允许任何异常传播到 asmx 文件之外(更喜欢使用自定义有效负载对象来表示错误)。输出实际上是 JSON 而不是 SOAP,但由于我没有覆盖这部分 asp.net 基础架构的经验,因此您可以指出的任何内容都会非常有帮助。
  • I this SO answer 描述了这样一个 HTTP 模块。我没有测试过。
【解决方案2】:

是 ASMX 还是 AJAX JavaScript 引发了异常?

如果是 Javascript,您需要将异常处理写入您的 JS,然后将其推送回服务器以在您的错误数据存储中进行跟踪——可能通过对您的网络服务的另一个调用。

如果是 ASMX,那么它可能会被您的 Application_Error 捕获,但由于 ASMX 返回 XML 或 JSON,除非您正在寻找它,否则它不一定会显示在您的 UI 上。

【讨论】:

    【解决方案3】:

    客户端我将简单地将您对服务的调用包装在 JavaScript 中。 在服务器端,错误应该作为一个记录在你的服务器日志中。 http 500 错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      相关资源
      最近更新 更多