.NETWeb服务中的错误处理策略

.NETWeb服务中的错误处理策略,.net,web-services,architecture,soap,error-handling,.net,Web Services,Architecture,Soap,Error Handling,我有一个在.NET中构建的相当丰富的web服务库,我将其用作我们公司网站的数据模型。在大多数.NET应用程序中,我使用全局ASAX文件对应用程序引发的所有异常进行分析、记录和创建错误报告 GlobalASAX不适用于web服务,所以我很好奇人们想出了哪些其他策略来解决这个限制。目前我只做了以下几点: <WebMethod()> _ Public Function MyServiceMethod(ByVal code As Integer) As String Try

我有一个在.NET中构建的相当丰富的web服务库,我将其用作我们公司网站的数据模型。在大多数.NET应用程序中,我使用全局ASAX文件对应用程序引发的所有异常进行分析、记录和创建错误报告

GlobalASAX不适用于web服务,所以我很好奇人们想出了哪些其他策略来解决这个限制。目前我只做了以下几点:

<WebMethod()> _
Public Function MyServiceMethod(ByVal code As Integer) As String
    Try
        Return processCode(code)
    Catch ex As Exception
        CustomExHandler(ex) 'call a custom function every time to log exceptions
        Return errorObject
    End Try
End Function
_
作为字符串的公共函数MyServiceMethod(ByVal代码为整数)
尝试
返回进程代码(代码)
特例
CustomExHandler(ex)'每次调用自定义函数以记录异常
返回错误对象
结束尝试
端函数

除了调用Catch中的函数之外,还有其他更好的方法吗?

假设您不能接受的建议,则表明没有办法使用全局错误处理,这会使您陷入当前方法的困境:

“一个Web应用程序可以由多个XML Web服务组成,但是Global.asax文件中的应用程序错误事件不能用于全局异常处理。HttpHandler for XML Web服务会使用在执行XML Web服务时发生的任何异常,并在调用应用程序错误事件之前将其转换为SOAP错误。”


即使你有很多函数,至少你是在将异常分派到一个公共位置,而不是使用剪切粘贴编程。看起来你的方法符合DRY原则。换句话说,“你很好!”

考虑转移到WCF,它对这类问题有一个解决方案。