ASP.NET(C#)web服务中的异常处理

本文关键字:服务 异常处理 web NET ASP | 更新日期: 2023-09-27 18:29:04

我正在寻找一种方法,将asp.net应用程序的web服务中的异常消息传输到ajax错误回调函数。我所能找到的只是捕捉一个从web服务抛出到C#代码中的异常,但我是从ajax代码而不是C#代码调用我的服务的。我想要的不仅仅是返回的HTTP状态代码
这是我的服务代码的捕获块:

catch (Exception ex)
        {
            var fault = new GenericFault { Message = ex.Message, Operation = "" };
            throw new FaultException<GenericFault>(fault);
        }
    }

这是我的ajax错误回调:

 error: function (err) {
         alert("The server encountered an error, please resubmit your request. If the problem persists, contact your administrator.");
         return 'error occured';
    }

我已经尝试过抛出web故障异常,但这也没有达到目的,因为只有HTTP状态代码被传递。

ASP.NET(C#)web服务中的异常处理

找到了答案。诀窍在于抛出正确的异常
由于回调错误函数中捕获的错误在xhr对象中看到了详细信息
因此,您需要抛出HttpException,并传递状态代码和字符串消息。catch块应该看起来像:

catch (Exception ex)
        {
             throw new HttpException(500, ex.Message);
          }

然后您的ajax回调将得到您从这里传递的ex消息:

error: function (err) {
     alert("The Detailed server error is "+err.responseJSON.Message);
     return 'error occured';
}