1. 程式人生 > >無法驗證資料。執行當前 Web 請求期間,出現未處理的異常。請檢查堆疊跟蹤資訊

無法驗證資料。執行當前 Web 請求期間,出現未處理的異常。請檢查堆疊跟蹤資訊

無法驗證資料。    
  說明:   執行當前   Web   請求期間,出現未處理的異常。請檢查堆疊跟蹤資訊,以瞭解有關該錯誤以及程式碼中導致錯誤的出處的詳細資訊。    
   
  異常詳細資訊:   System.Web.HttpException:   無法驗證資料。  
   
  源錯誤:    
   
  執行當前   Web   請求期間生成了未處理的異常。可以使用下面的異常堆疊跟蹤資訊確定有關異常原因和發生位置的資訊。      
   
  堆疊跟蹤:    
   
   
  [HttpException   (0x80004005):   無法驗證資料。]  
        System.Web.Configuration.MachineKey.GetDecodedData(Byte[]   buf,   Byte[]   modifier,   Int32   start,   Int32   length,   Int32&   dataLength)   +195  
        System.Web.UI.LosFormatter.Deserialize(String   input)   +60  
   
  [HttpException   (0x80004005):   Authentication   of   viewstate   failed.     1)   If   this   is   a   cluster,   edit   <machineKey>   configuration   so   all   servers   use   the   same   validationKey   and   validation   algorithm.     AutoGenerate   cannot   be   used   in   a   cluster.     2)   Viewstate   can   only   be   posted   back   to   the   same   page.     3)   The   viewstate   for   this   page   might   be   corrupted.]  
        System.Web.UI.LosFormatter.Deserialize(String   input)   +118  
        System.Web.UI.Page.LoadPageStateFromPersistenceMedium()   +101  
   
  [HttpException   (0x80004005):   Invalid_Viewstate  
  User-Agent:   Mozilla/4.0   (compatible;   MSIE   6.0;   Windows   NT   5.2;   .NET   CLR   1.1.4322)  
        System.Web.UI.Page.LoadPageStateFromPersistenceMedium()   +442  
        System.Web.UI.Page.LoadPageViewState()   +18  
        System.Web.UI.Page.ProcessRequestMain()   +447  

解決方案

解決方法:在Page指令中設定禁止MAC(身份驗證程式碼   ):  
  <%   @   Page   EnableViewStateMac="false">  
   
        個人分析:當網頁提交給本身時,伺服器會通過MAC以檢查檢視的狀態,看狀態是否在客戶端被更改.但這也就導至一個潛在的問題,即伺服器端的狀態一般保持時間很短,如果在伺服器上狀態消亡後再提交頁面的話,就會造成MAC驗證不通過,產生無法驗證的錯誤提示.  
   
        這個解決方法也存在很多麻煩,比如需要在每個提交給自身的頁面加上這條指令.而且存在一些安全隱患,如有人惡意更改檢視狀態等.