0

我正在使用由 jQuery / ajax 以 JSON 格式调用的 ASP.NET WebMethods。

我必须通过为用户提供更多信息来改进异常处理。

我捕获了原始异常并抛出了一个“UserFriendlyException”,其中只设置了“标题”和“描述”。

我只得到一个非常基本的 JSON String {"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""}

我正在寻找一些解决方案,并找到了如下页面: http ://encosia.com/use-jquery-to-catch-and-display-aspnet-ajax-service-errors/或https://stackoverflow.com/a/ 891442/1099519

您可以在哪里访问消息,这很好,但我仍然想访问多个属性。我看到的大多数文章通常都建议将 statusCode 用于“ID”而不是更少。

我想到了一个不同的方法:可能有一种方法可以以某种方式覆盖异常的呈现(就像在 WCF 中可以修改完整的消息一样),所以在这种情况下,我可以以某种方式捕获我的 UserException 并呈现 JSON 字符串我自己的?

有任何想法吗?

感谢您的帮助,多米尼克

4

2 回答 2

0

Just pass the error exception for the class object, as a param in the WebMethod object you return.

This is a jquery method we use to call web method

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

The, when we process the service, if an error has occurred, we just pass the exception message as the result. Hopefully this is what you are looking for. So basically, don't use Jquery Message, but instead send back the return object as an object with the code behind exception that was throwm.

于 2013-10-02T17:28:36.443 回答
0

我实际上以一种非常不同的方式解决了它。我无法向异常添加更多信息,因此我需要找到另一个解决方案:

我创建了一个 JsonException,我可以简单地传递一个“JsonContainer”对象,并且在调用 ToString() 时,我将 JsonContainer 中的属性转义为一个 Json 字符串。

所以最后,异常的消息是一个包含我想要的所有信息的 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 方法(本机或使用插件)

于 2014-01-14T15:21:19.027 回答