我应该如何处理在处理json方法时未找到的记录

时间:2015-08-20 12:54:44

标签: c# web-services

然而,我使用以下Web方法来获取驱动程序的数据。我的问题是,如果没有找到数据,返回json处理错误的最佳方法是他们的特定错误代码,例如找不到页面我不会404我应该在我的webmethod中发送回来

[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] 
public motorista GetDriverInformation(int driverId)
{

        motorista _wsmoristita = new motorista();
        _wsmoristita = _dal.GetDriverInformation(driverId);
        return _wsmoristita;          

}

2 个答案:

答案 0 :(得分:0)

我想你正在使用 jquery ajax 。您可以使用特定消息在WebMethod中抛出自定义异常,然后在您在ajax调用中定义的错误函数中显示此消息。

$.ajax({});

的一部分
    success: OnSuccess,
    error: OnErrorCall

您的OnErrorCall功能将如下所示

 function OnErrorCall(response) {

     alert(response.responseText);
  }

您甚至可以在某个文本框中显示该消息,因此如果您发送带有未找到记录等异常的异常,您可以在标签,警告等中显示该消息。

以下是自定义异常的示例。如果需要,您可以阅读MSDN Article

public class EmployeeListNotFoundException: Exception
{
    public EmployeeListNotFoundException()
    {
    }

    public EmployeeListNotFoundException(string message)
        : base(message)
    {
    }

    public EmployeeListNotFoundException(string message, Exception inner)
        : base(message, inner)
    {
    }
}

答案 1 :(得分:0)

我最终使用了类似下面的内容,但我认为它并不是最好的方式,因为它不会导致错误导致网络开发人员出错。

if (_wsHistory.id_terminal == 0)
 {

            Context.Response.Status = "404 Terminal table Not Found";
            //the next line is untested - thanks to strider for this line
            Context.Response.StatusCode = 404;
            //the next line can result in a ThreadAbortException
            //Context.Response.End(); 
            Context.ApplicationInstance.CompleteRequest();
            return null;
}