2011-09-20 23 views
0

我遇到UpdatePanel問題。當用戶單擊面板內的按鈕時,我得到一個異步PostBack,並重新初始化一組jQuery選項卡。如果(後首次成功異步回發),我嘗試使用的UpdatePanel外面的按鈕或其他控制,我得到以下錯誤:同步回發後無效的ViewState

An error has occured on page: http://server/details.aspx for user: at IP: 192.168.0.92 
The state information is invalid for this page and might be corrupted. at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) 
    at System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner, String persistedState) 
    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.details_aspx.ProcessRequest(HttpContext context) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) Invalid viewstate. 
    Client IP: 192.168.0.92 
    Port: 1707 
    Referer: http://server/details.aspx 
    Path: /server/details.aspx 
    User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322) 
    ViewState: /wEPDwULLTEwMTkxMjEwNTNkZBSW/poBumnzl2Hp6YECMfZitwnKh80rC7JEaLc28HAh,z02m+uZDqc2t7iURUsMo+CuP5x4r/SPERT297Zo+E1XXWjvhDLPLpwJMqHic8o0GS89zNWWT5HUTr8DkPJgRKqGADUP0cXLYZ+seXS2JdxB85T6LsnrZwgBZC8hKDZPFlQtPIc9U0d5WCRQJFXRIHr3YLlQmTdXqcZBd09TrgA3y+hxpMJ4pq4kFU7wA9sZ0P+YFOzCNtIadsoXxZGzz+PjePHLPu+mwBAgLdI4mXYtA5MdgrH6OaM3eZaS9dZC5vpHWdC3b+ni3SkytO1FLhR4IUCNKIh+ApVtVNbfMkYAAAiXqSJKitUpZrqb3VM/EGsoZAK63iVAIpIBWkT/TeNU49UfofDChcMdsL/MLX2LEAMPG1BLhmcxIVPWJzGdCldPk5FDie6m2Wm5SRah3oMpcltVUv0wjGOo04TLOmrb/vw5iXyXAPC0eHch60Bm2gGCxY/PKTa9A/mWIyXwnVT2Ma0mi6i9gkvsDyWVN/u/ckNQrM4yN31y1vFwXG3jP+2euwDcZ41eK4md7FM6tBFZOvR7RV2mSI4BvJliLihfcje9IEEv9/X1zuz73RZrEYKVuCN/gFJNwRDJgYia2sCo1oE3NQn5guMFk+YSg9xzMgEQ0SmejhqnfughBrnbzhFWNXbCHz/hTkeBFYRRx/k3uTDpffW4qsVTL+VyZr3b8QKLZELNCrx2wqVSpup0/Mux65WDJykvcMbOq+... 
The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters.  at System.Convert.FromBase64String(String s) 
    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() 

我真的不知道如何去解決此,一切在不同選項卡上的updatepanel內似乎工作。

+0

你有一些HttpModule修改ViewState或頁面嗎?也許是一個壓縮模塊? – onof

+0

您可以創建一個可靠地重現問題的*最小*工作示例嗎? – Heinzi

+0

它與我的內聯網很緊密地抱在一起,對不起,但沒有任何模塊攔截任何東西。 – Echilon

回答

0

也許你在飛行中創建新的控件,它具有一個視圖狀態,這就是爲什麼...?

1

它可能發生的原因有幾個。

最重要的是您的刷新Ajax控件正在創建自己的viewstate,它取代了主頁viewstate。

有一些解決方案,我在其他論壇上讀到這樣的阿賈克斯輸出後加入

   Response.End 

。當您使用Response.End時,您可能需要處理ThreadAbortException。

另一個用戶建議的第二種方式是從Ajax表單元素中取消Runat。

當Ajax回發URL轉到單獨的頁面以獲取數據時也會發生這種情況。如果是這種情況,您可能需要將網址更改爲同一頁面。

+0

奇怪的是,它實際上是一個按鈕,它會發送一封電子郵件,然後切換一個asp:Label的可見屬性。 – Echilon