異常:Data = 由於代碼已經過優化或者本機框架位於調用堆棧之上,無法計算表達式的值。


做項目的時候,將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來序列化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM