【发布时间】:2009-11-02 22:02:29
【问题描述】:
我正在从 JQuery 调用页面方法,如下所述:http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/
这一切都很好。在测试过程中,当我从 Web 方法得到的响应太大时,我遇到了一个错误: 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串长度超过 maxJsonLength 属性设置的值。
我能够对 maxJsonLength 属性进行一些研究并将其设置得更高,但是我想尝试在服务器端捕获此异常,然后在 Ajax 调用期间将其发送到客户端。我该怎么做呢?
我在我的方法中设置了一个 try/catch 块但无济于事,它发生在我的方法之外(在 JSON 序列化期间)。
StackTrace 看起来像这样:
在 System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, StringBuilder output, SerializationFormat serializationFormat) 在 System.Web.Script.Serialization.JavaScriptSerializer.Serialize(对象 obj,SerializationFormat 序列化格式) 在 System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext 上下文,WebServiceMethodData 方法数据,IDictionary`2 rawParams) 在 System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)
更新:
全局和页面级别的捕获对我不起作用(但此时可能会得到赏金。为非常特定于一个页面调用的东西维护全局异常似乎是一个糟糕的设计决策。)我想要抓住的重点例外情况是,我可以对文本进行中继,并且仍然对 javascript 调用做出有效响应。
【问题讨论】: