Добавление информации об исключении в ASP.NET WebMethods, вызываемых JQuery Ajax

0

Я использую ASP.NET WebMethods, которые вызывается jQuery/ajax в формате JSON.

Я должен улучшить обработку исключений, предоставив больше информации для пользователя.

Я поймаю исходное исключение, и я выбрал "UserFriendlyException", где заданы только "Заголовок" и "Описание".

Я получаю очень простой JSON String {"Сообщение": "Произошла ошибка обработки запроса". "StackTrace": "", "ExceptionType": ""}

Я искал некоторые решения и нашел такие страницы, как: http://encosia.com/use-jquery-to-catch-and-display-aspnet-ajax-service-errors/ или qaru.site/questions/1028595/...

где вы можете получить доступ к сообщению, что хорошо, но все же я хотел получить доступ к нескольким свойствам. Большинство статей, которые я видел, обычно рекомендуют использовать statusCode для "ID" более, чем меньше.

Я думал о другом утверждении: возможно, есть способ переопределить визуализацию исключений (например, в WCF можно изменить полное сообщение), поэтому в этом случае я мог бы каким-то образом поймать свое UserException и отобразить строку JSON по моему самому?

Есть идеи?

Спасибо за помощь, Доминик

  • 0
    Можете ли вы уточнить, что вы имели в виду под «но все же я хотел получить доступ к нескольким свойствам». - если вы перехватываете исключения и перебрасываете их как определенный пользователем тип исключения, вы уже имеете полный контроль над свойствами этого пользовательского исключения ...
Теги:
exception
webmethod

2 ответа

0
Лучший ответ

Я фактически решил это совсем по-другому. Я не мог добавить больше информации об исключении, поэтому мне нужно было найти другое решение:

Я создал исключение JsonException, которое я просто могу передать объекту JsonContainer и при вызове ToString() я убираю свойства в JsonContainer в Json String.

Поэтому в итоге сообщение об исключении было Json-String, содержащее всю информацию, которую я хотел, и я мог разбирать ее в JQuery следующим образом:

if (data.responseJSON && data.responseJSON.ExceptionType == "InhouseWKOIT.Framework.BusinessEntities.Web.JsonContainerException") {
  var messageObject = JSON.parse(data.responseJSON.Message);
  var someInformation = messageObject.MyProperty1;
  var someMoreInformation = messageObject.MoreInformation;
}

Это работает очень хорошо, приятно и гладко :-)

Браузеру необходимо поддерживать только метод JSON.parse (изначально или с помощью плагина)

0

Просто передайте исключение ошибки для объекта класса, в качестве параметра в возвращаемом объекте WebMethod.

Это метод jquery, который мы используем для вызова веб-метода

   this.Execute = function (HandlerName, Method, JsonData, SuccessCallBack, ShowLoading, LoaderText, AsyncMode,       ErrorCallback)
    {
        return this.Post(serviceLocation.format(HandlerName, Method), JsonData, SuccessCallBack, ShowLoading, LoaderText, AsyncMode, ErrorCallback)
    };

Когда мы обрабатываем службу, если произошла ошибка, мы просто передаем сообщение об исключении в качестве результата. Надеюсь, это то, что вы ищете. Таким образом, в основном, не используйте Jquery Message, а вместо этого отправляйте возвращаемый объект как объект с кодом за исключением исключения, которое было throwm.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню