我打電話從JQuery的頁面方法如下所述:http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/如何在來自JQuery的Ajax調用期間處理服務器端異常?
這一切工作正常。在測試過程中,當我的Web方法響應太大時,發現錯誤: 使用JSON JavaScriptSerializer進行序列化或反序列化時出錯。字符串的長度超過maxJsonLength屬性中設置的值。
我能夠對maxJsonLength屬性進行一些研究並將其設置得更高,但是我想在Ajax調用期間發送給客戶端之前嘗試捕獲此異常serverside。我該怎麼做呢?
我已經把我的方法都無濟於事內的try/catch塊,這是我的方法外發生的事情(JSON序列化過程中)。
堆棧跟蹤看起來是這樣的:
at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, StringBuilder output, SerializationFormat serializationFormat) at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, SerializationFormat serializationFormat) at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams) at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)
更新:
全球和頁面級漁獲量也不會爲我工作(但在這一點上可能會獲得賞金維持全球例外。對於一個頁面調用非常具體的東西似乎是一個糟糕的設計決定。)我想要捕捉異常的一點是,我可以對文本進行大寫操作,並仍然對JavaScript調用做出有效響應。
問題是,在我的方法運行後,但在Ajax有機會做自己的截斷之前,太長的文本被確定爲在服務器上太長。能夠捕捉錯誤的想法是我可以手動查看我發送的對象並截斷錯誤的特定字段。 – 2009-12-10 15:50:39
對於鏈接壽命非簡單的一行應答+1。 – 2009-12-10 15:51:16
哦,對不起,我錯誤地把你作爲傳入請求的問題= /所以你的問題基本上是你返回一個對象,並且代碼失敗後,你已經交出服務器的返回對象序列化?那麼,在那種情況下,如何在try/catch-block內手動調用'System.Web.Script.Services.JavaScriptSerializer.Serialize'?我知道你當前的執行發生在你不能嘗試/捕獲它的地方,但是不僅僅是返回myObject,而是返回getValidatedObject(myObject),然後getValidatedObject序列化,捕獲異常和截斷,並且... – 2009-12-10 17:22:00