2011-09-06 61 views
0

由於服務器移動,我在某些客戶端計算機上收到錯誤「System.Web.HttpException:無法驗證數據」。堆棧跟蹤粘貼在下面。Servermove「System.Web.HttpException:無法驗證數據」

我知道這可能發生在頁面呈現給用戶但尚未完全加載(視圖狀態)並且用戶過早點擊控件時。但有沒有一種方法可以解決它而不告訴用戶輕鬆?另外:另一臺計算機上沒有問題,位於另一個域中(可能與服務器域更接近或相同)。在服務器移動之前,它也完美無缺地工作。

任何想法或想法可能有幫助嗎?

堆棧跟蹤:

[HttpException (0x80004005): Unable to validate data.] 
    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() +102 

[HttpException (0x80004005): Invalid_Viewstate 
     Client IP: 10.33.202.162 
     Port: 2080 
     User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) 
     ViewState: dDwyMDE4ODE0MjgxO3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDM+Oz47bDx0PHQ8O3A8bDxpPDA+O2k8MT47aTwyPjtpPDM+O2k8ND47aTw1PjtpPDY+O2k8Nz47aTw4PjtpPDk+O2k8MTA+O2k8MTE+O2k8MTI+O2k8MTM+O2k8MTQ+O2k8MTU+O2k8MTY+O2k8MTc+O2k8MTg+O2k8MTk+O2k8MjA+O2k8MjE+O2k8MjI+O2k8MjM+O2k8MjQ+O2k8MjU+Oz47bDxwPFVXVi0wNDAwO3V3djA0MDA+O3A8VVdWLTAzMDE7dXd2MDMwMT47cDxVV1YtMDMwMDt1d3YwMzAwPjtwPFVXVi0wMjAyO3V3djAyMDI+O3A8R1ZJIFdlYnNlcnZpY2U7Z3Zpd3M+O3A8UG9saXNQbHVzO3BvbGlzcGx1cz47cDxQb2xpcztwb2xpcz47cDxPRFNGMDAxO29kcz47cDxPRFNGMDAyO29kc0YwMDI+O3A8T0RTRjAwMztvZHNGMDAzPjtwPFVEUFM7VURQUz47cDxVREEwMTAwO1VEQTAxMDA+O3A8VURBMDEwMTtVREEwMTAxPjtwPFVEQTAxMDI7VURBMDEwMj47cDxBVkIwMTtBVkIwMT47cDxBVkIwMjtBVkIwMj47cDxBVkIwMztBVkIwMz47cDxQVkM7cHZjPjtwPEdhayBJbmtpams7MT47cDxVU1pPIElua2lqazs0PjtwPEhHTyBCb3V3OzEwNT47cDxIR08gQlZHOzEwMT47cDxIR08gRGV0YW07MTAyPjtwPEhHTyBHVU87MTAzPjtwPEhHTyBVU1pPOzEwND47cDxIR08gQk9VVyBBRzsxMDY+Oz4+Oz47Oz47Pj47Pj47bDxSZXNwb25zZU9wbWFrZW5DaGVja2JveDs+PjzKtZ2M0RXRnZgX5z4o208+vljZ 
     Http-Referer: http://be04uap535uwv38.productie.hrc.ba.uwv.nl/soap/suwiml/beheer/KBS012KBS013Vraag.aspx 
     Path: /soap/suwiml/beheer/KBS012KBS013Vraag.aspx.] 
    System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +443 
    System.Web.UI.Page.LoadPageViewState() +18 
    System.Web.UI.Page.ProcessRequestMain() +447 

回答

0

我也通常所見的這些類型的錯誤時有某種負載均衡的事情。舊服務器仍在線嗎?是否有負載平衡器可能將響應從舊服務器發送給用戶,然後下一個請求轉到新服務器?在某些情況下,流量仍然會流向較舊的服務器,也可能會發生一些DNS緩存。

其他一些問題: 舊服務器是否離線?人們是否可以打開舊會話(使用舊的Viewstate鍵),並將這些會話發佈回新服務器?

最糟糕的情況是,如果您無法弄清楚爲什麼會發生這種情況,您可以將新機器上的machine key(在machine.config中)設置爲與舊機器相同。它通常不是一個好習慣,但是這使得視圖狀態可以在任何一臺機器上進行加密和解密。