做項目的時候,將DataTable序列化成Json,通過ashx向前台返回數據的時候,前台總是獲取不到數據,但是程序運行卻沒問題,
沒拋出異常。一時找不到辦法,減小輸出的數據量,這時前台可以接收到頁面,沒辦法,只能try catch了。截獲異常:
Data = 由於代碼已經過優化或者本機框架位於調用堆棧之上,無法計算表達式的值。 不明覺厲,第一次遇到這個情況,網上查了下,
網上的解決辦法基本都一樣,這里貼出來:
症狀: 如果您使用的Response.End、 Response.Redirect或Server.Transfer方法,則ThreadAbortException會發生異常。您可以使用try-catch語句來捕捉此異常。 原因 Response.End方法結束頁執行,並將執行轉移到應用程序的事件管道中的Application_EndRequest事件。不執行的Response.End的代碼行。 因為這兩種方法在內部調用Response.End , Response.Redirect和Server.Transfer方法中將出現此問題。 解決方案 要解決此問題,請使用下列方法之一: 對於Response.End,調用HttpContext.Current.ApplicationInstance.CompleteRequest方法,而不是Response.End繞過到Application_EndRequest事件的代碼執行。 對於Response.Redirect,使用Response.Redirect (bool endResponse 字符串 url)傳遞false以取消內部調用Response.End的endResponse參數的重載。例如: Response.Redirect ("nextpage.aspx", false); 如果您使用此替代方法,請執行下面Response.Redirect的代碼。 對於Server.Transfer,而是使用Server.Execute方法。
但是這種是可以解決,那個異常的問題,但是頁面還是接收不到數據,有點懷疑是不是數據量太大了,於是測試輸出10條數據,這種情況下,頁面可以接受數據,基本可以斷定是數據量太大的問題,或者是序列化json的時候,json
格式的問題,找到了這篇(http://www.cnblogs.com/war-hzl/p/4828450.html)解決傳輸json大量數據的解決辦法,但是就是有點不想用,在評論里看到,可以利用json.net來解決,於是嘗試了下(JsonConvert.SerializeObject(dt),
問題得到了解決。
PS:之前我用的是StringBuild來序列化。