项目中对于未处理异常的捕获是通过使用ApplicationErrorLog组件,但无论通过组件还是Global.asax或者自定义HttpModule都是通过在管道中截获异常信息,例如:
服务器端捕捉asmx产生的未处理异常void Application_Error(object sender, EventArgs e)
}

但是通过管道这种方式是不能截获asmx调用过程中产生的未处理异常的,所以只能使用别的小技巧来解决这个问题。因为项目统一使用ApplicationErrorLog来捕获未处理异常的,所以这里就不好添加另类的方式,影响统一性。现在处理的方式是把asmx产生的异常post到一个ashx页面来接收这个异常,然后在该页面抛出,这样就可能通过正常的httpmodule来截获了。
1、封装post操作
服务器端捕捉asmx产生的未处理异常    protected void PostEx(Exception ex)
    }

2、新建ashx页面(AsmxException.ashx)来接收post过来的异常
}

3、在asmx中调用方法
服务器端捕捉asmx产生的未处理异常    [WebMethod(MessageName = "UpdatingContent", Description = "", EnableSession = false)]
服务器端捕捉asmx产生的未处理异常    [SoapHeader(
"Credentials")]
服务器端捕捉asmx产生的未处理异常    
public void UpdatingContent(string identity)
    }

记得PostEx(ex)把发生的异常post到接收页面后还要再次抛出原来的异常,这样客户端才能正常收到原来的异常信息。

相关文章:

  • 2021-07-17
  • 2022-01-21
  • 2022-12-23
  • 2021-07-22
  • 2021-09-27
  • 2022-01-18
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-20
  • 2022-12-23
  • 2022-01-20
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案