Как вернуть ошибку из вебметода? - PullRequest
5 голосов
/ 27 августа 2011

Как можно вернуть ошибку в методе aspx page, украшенном WebMethod?

Пример кода

$.ajax({
    type: "POST",
    url: "./Default.aspx/GetData",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: AjaxSucceeded,
    error: AjaxFailed
});

[WebMethod]
public static string GetData()
{

}

Как можно вернуть ошибку изWebMethod?Таким образом, можно показать часть ошибки jquery, чтобы показать подробности ошибки.

Ответы [ 3 ]

8 голосов
/ 27 августа 2011

Я не знаю, есть ли более WebMethod -специфический способ сделать это, но в ASP.NET вы обычно просто устанавливаете код состояния для вашего объекта ответа . Примерно так:

Response.Clear();
Response.StatusCode = 500; // or whatever code is appropriate
Response.End;

Использование стандартных кодов ошибок является надлежащим способом уведомления потребляющего клиента HTTP об ошибке. Перед завершением ответа вы также можете Response.Write() любые сообщения, которые вы хотите отправить. Форматы для них гораздо менее стандартизированы, поэтому вы можете создавать свои собственные. Но пока код состояния точно отражает ответ, ваш JavaScript или любой другой клиент, использующий эту службу, поймет ошибку.

3 голосов
/ 27 августа 2011

Просто добавьте исключение в свой PageMethod и перехватите его в AjaxFailed.Примерно так:

function onAjaxFailed(error){
     alert(error);
}
1 голос
/ 27 августа 2011

Ошибка указывается кодом состояния http (4xx - ошибка запроса пользователя, 5xx - ошибка внутреннего сервера) страницы результатов.Я не знаю asp.net, но, думаю, вам нужно сгенерировать исключение или что-то в этом роде.

...