Как исправить Информация о состоянии недействительна для этой страницы и может быть повреждена - PullRequest
5 голосов
/ 13 августа 2010

Я работаю над проектом Asp.net, в котором я динамически создал несколько пользовательских элементов управления на странице с помощью LoadControl () объекта Page, но когда я пытаюсь выполнить обратную передачу через любую страницу, я получаю "The state information is invalid for this page and might be corrupted.", даже когдаустановите Viewstate динамически созданного элемента управления на false.

Если вы столкнулись с этой проблемой, скажите, пожалуйста, как вы ее исправили.

Трассировка стека: -

[FormatException: 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. ]
   System.Convert.FromBase64String(String s) +0
   System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +77
   System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +4
   System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) +37
   System.Web.UI.HiddenFieldPageStatePersister.Load() +147

[ViewStateException: Invalid viewstate. 

[HttpException (0x80004005): The state information is invalid for this page and might be corrupted.]
   System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +198
   System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner, String persistedState) +14
   System.Web.UI.HiddenFieldPageStatePersister.Load() +251
   System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +106
   System.Web.UI.Page.LoadAllState() +43
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +8431
   System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +253
   System.Web.UI.Page.ProcessRequest() +78
   System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
   System.Web.UI.Page.ProcessRequest(HttpContext context) +49
   ASP.contact_us_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\otherland_ecom\33f31476\6c5f9007\App_Web_zgmfrrfa.14.cs:0
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

Ответы [ 4 ]

2 голосов
/ 27 февраля 2012

Установите для параметра EnableEventValidation значение false на странице дизайна (.aspx)

<%@ Page Title="Home Page" EnableEventValidation="false" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
1 голос
/ 27 февраля 2012

Не могли бы вы убедиться, что динамические элементы управления загружены до Page_Load. Вы можете загрузить их в Page_Init. (Нет необходимости назначать значения, так как они будут назначены из состояния просмотра).

0 голосов
/ 03 марта 2017

Я заменил хранилище Viestate на Session, и эта проблема исчезла.Когда сеанс истекает, мой логин истекает, поэтому страница вынуждена обновляться и оставаться действительной:

//ViewState["startConversion"] = false;
Session["startConversion"] = false;

или

<asp:HiddenField ID="hfStartConversion" runat="server" />
0 голосов
/ 16 января 2014

Я думаю, что вы добавили элемент управления после метода page_load.когда вы добавляете элемент управления, он добавляет скрытое поле, которое пытается обработать его, когда страница отправляется обратно, оно не обрабатывается с начальным скрытым полем, поэтому возникает ошибка, когда при добавлении элемента управления динамически пытаться удалить его скрытое поле, тогда это решит вашу проблему.проблема.

...