Я использую 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 по моему самому?
Есть идеи?
Спасибо за помощь, Доминик
Я фактически решил это совсем по-другому. Я не мог добавить больше информации об исключении, поэтому мне нужно было найти другое решение:
Я создал исключение 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 (изначально или с помощью плагина)
Просто передайте исключение ошибки для объекта класса, в качестве параметра в возвращаемом объекте 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.