【问题标题】:Adding Exception Information on ASP.NET WebMethods called by JQuery Ajax在 JQuery Ajax 调用的 ASP.NET WebMethods 上添加异常信息
【发布时间】:2013-10-09 02:51:33
【问题描述】:

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

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

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

我只得到一个非常基本的 JSON 字符串 {"Message":"处理请求时出错。","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 字符串?

有什么想法吗?

感谢您的帮助, 多米尼克

【问题讨论】:

  • 你能澄清一下“但我仍然想访问多个属性”的意思吗? - 如果您正在捕获异常并将它们作为用户定义的异常类型重新抛出,则您已经可以完全控制该自定义异常的属性...

标签: jquery asp.net json exception webmethod


【解决方案1】:

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

我创建了一个 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 方法(无论是原生还是使用插件)

【讨论】:

    【解决方案2】:

    只需传递类对象的错误异常,作为您返回的 WebMethod 对象中的参数。

    这是我们用来调用web方法的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 消息,而是将返回对象作为一个对象发送回,其中包含抛出异常的代码。

    【讨论】:

      猜你喜欢
      • 2012-04-13
      • 2011-08-29
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 2011-02-18
      相关资源
      最近更新 更多