如何使用错误契约和jquery ajax处理WCF错误

本文关键字:错误 ajax 处理 jquery WCF 何使用 契约 | 更新日期: 2023-09-27 18:16:40

我在网上搜索了很多,但无法找到任何解决我的问题的方法。

我创建了两个应用程序。一个是WCF服务应用程序,另一个是通过jQuery Ajax使用WCF服务操作的主要应用程序。一切正常。最后,我想通过在WCF服务中添加错误处理代码来完成这个任务。现在,我在WCF服务中添加了"Fault Contract",但无法理解如何将错误从服务直接传递给jQuery ajax。现在,自定义错误消息没有被传递,而通用服务错误消息"Bad Request"正在被传递。

WCF服务代码

[ServiceContract]
public interface IAdmin_UserDet
{
    [OperationContract]
    [FaultContract(typeof(ErrorHandler))]
    string getData();
}
[DataContract]
public class ErrorHandler
{
    [DataMember]
    public string message { get; set; }
    [DataMember]
    public string methodName { get; set; }
    [DataMember]
    public int lineNumber { get; set; }
    [DataMember]
    public string errorDateTime { get; set; }
}
[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class Admin_UserDet : IAdmin_UserDet
{
    [WebInvoke(Method = "GET", UriTemplate = "returnData", ResponseFormat = WebMessageFormat.Json)]
    public string getData()
    {
        try
        {
            int num1 = 2;
            int num2 = 0;
            int res = num1/num2;
            return res.ToString();
        }
        //catch(FaultException<ErrorHandler> objErr)
        catch(Exception ex)
        {
          ErrorHandler objErr = new ErrorHandler();
          objErr.message = "division by zero";
          objErr.methodName = "getData";
          //return objErr.Detail.message + " | " + objErr.Detail.methodName;
          throw new FaultException<ErrorHandler>(objErr);
        }
    }
}

jQuery Ajax代码(通过它调用服务)

var wcfUrl = "http://localhost/VMService/Admin_UserDet.svc/";
 $('button[id=btnTest]').click(function () {
   $.ajax({
        type: "GET",
        url: wcfUrl + "returnData",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (response) {
                     alert("no error");
                     console.log(response);
        },
        error: function (e) {
                     console.log(JSON.parse(e.responseText));
        }
    });
});

运行应用程序后得到的错误消息

GET http://localhost/VMService/Admin_UserDet.svc/returnData 400 (Bad Request)

但是,我希望错误消息为"除零| getData",这已在getData方法中设置。

请指导我的确切方式/任何链接,从那里我可能得到一个关于如何处理jquery ajax的WCF错误的想法。

谢谢。

如何使用错误契约和jquery ajax处理WCF错误

我相信这里有答案,尽管这没有被标记为答案。