首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

由 ViewStateException: The client disconnected 想到的

     編輯:關於ASP.NET

異常堆疊

The client disconnected.
at System.Web.UI.ViewStateException.ThrowError(...)
at System.Web.UI.HiddenFieldPageStatePersister.Load()
at System.Web.UI.Page.LoadPageStateFromPersistenceMedium()
at SpringStudio.Naming.Website.PageBase.LoadPageStateFromPersistenceMedium()
at System.Web.UI.Page.LoadAllState()
at System.Web.UI.Page.ProcessRequestMain(...)

原因:回發時 ViewState 資料不完整(用戶點「停止」或跳轉頁面導致連線中斷),反序列化失敗。

四點思考與對策

  1. 關閉不必要的 ViewState:控制項/頁面/站點層級設 EnableViewState=false,減少體積、避免異常、提升性能。
  2. ViewState 設計初衷好但頻寬/CPU 有限:未來頻寬足夠、伺服器夠強時可忽略此問題。
  3. 壓縮或伺服器端儲存 ViewState:
    • 壓縮:SavePageStateToPersistenceMedium 壓縮 (30~50% 壓縮率)、LoadPageStateFromPersistenceMedium 解壓。省頻寬、費 CPU。
    • 存檔:序列化存伺服器硬碟(檔名唯一),回發時讀檔。省頻寬、增 I/O。
  4. 頻繁拋出此異常 = 網站太慢:用戶等待過久主動中斷,需升級頻寬/硬體或優化程式碼。

實作重寫點

protected override void SavePageStateToPersistenceMedium(object viewState) { /* 壓縮或存檔 */ }
protected override object LoadPageStateFromPersistenceMedium() { /* 解壓或讀檔 */ }
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved