Asp.net

ASP.NET:無法驗證數據

  • August 23, 2011

ASP.NET 中此異常的原因是什麼?顯然這是一個視圖狀態異常,但我無法在引發異常的頁面上重現錯誤(一個簡單的兩個 TextBox 表單,帶有一個按鈕和導航連結)。

FWIW,我沒有執行網路農場。

例外

錯誤消息:無法驗證數據。

錯誤來源:System.Web

錯誤目標站點:字節

$$ $$ 獲取解碼數據(字節$$ $$, 字節$$ $$, Int32, Int32, Int32 ByRef)

發布數據

觀點:

/wEPDwULLTE4NTUyODcyMTFkZF96FHxDUAHIY3NOAMRJYZ+CKsnB

事件驗證:

/wEWBAK+8ZzHAgKOhZRcApDF79ECAoLch4YMeQ2ayv/Gi76znHooiRyBFrWtwyg=

異常堆棧跟踪

  at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)
  at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
  at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState)
  at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState)
  at System.Web.UI.HiddenFieldPageStatePersister.Load()
  at System.Web.UI.Page.LoadPageStateFromPersistenceMedium()
  at System.Web.UI.Page.LoadAllState()
  at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  at System.Web.UI.Page.ProcessRequest()
  at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
  at System.Web.UI.Page.ProcessRequest(HttpContext context)
  at ASP.default_aspx.ProcessRequest(HttpContext context)
  at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
  at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

~ 威廉·萊利-蘭德

此錯誤的最可能原因是在所有視圖狀態載入之前停止回發(使用者點擊停止或返回按鈕),視圖狀態將無法驗證並拋出錯誤。

其他潛在原因:

  • 從生成視圖狀態到使用者將其發布回伺服器(不太可能)之間的應用程序池回收。
  • machineKeys 未同步的網路場(不是您的問題)。

更新:關於該問題的 Microsoft 文章。除了上述之外,他們還提出了另外兩個潛在的原因:

  • 通過防火牆/防病毒軟體修改視圖狀態
  • 從一個 aspx 頁面發佈到另一個頁面。

引用自:https://stackoverflow.com/questions/140303