Recently I was working on a ASP.Net project template which can accommodate both asp.net web forms and MVC 3 screens together. I started with a MVC 3 application and added a web page .I could see that MVC3 template is missing some configurations in the web.config which makes it little difficult to work. Finally I could see the web forms running along with the MVC views after some changes. But when I put a button inside the webpage and wired its click event the things started breaking. The error I was getting tells about the view state.
The state information is invalid for this page and might be corrupted.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: The state information is invalid for this page and might be corrupted.
Disabling ASP.Net page viewstate
I have compared the code and config with a newly created normal asp.net web forms application.But not able to find any difference. Then I decided to go with disabling the view state.
As everybody does I disabled the view state at the page directive as follows
It didn't fix the issue.Then I started disabling the view state for the controls present in the web page.Still the same error. Then I started google and could see some ideas such as disabling in the web.config.But still the viewstate came and it was not able to deserialize properly.The state information is invalid for this page and might be corrupted.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: The state information is invalid for this page and might be corrupted.
With the stack trace as
[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. Client IP: ::1 Port: Referer: http://localhost:49849/WebForm1.aspx Path: /WebForm1.aspx User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) ViewState: /wEPDwUKMjA0OTM4MTAwNGRk,/wEPDwUKMjA0OTM4MTAwNGRk] [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) +235 System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner, String persistedState) +14 System.Web.UI.HiddenFieldPageStatePersister.Load() +251 System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +106 Mvc3TestApp.WebForm1.LoadPageStateFromPersistenceMedium() in E:\Joy\Code\DotNet\ASPDOTNET\MVC\Mvc3TestApp\Mvc3TestApp\WebForm1.aspx.cs:27 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.webform1_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\09b72d60\350d6099\App_Web_uhhehyfz.0.cs:0 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
Disabling ASP.Net page viewstate
I have compared the code and config with a newly created normal asp.net web forms application.But not able to find any difference. Then I decided to go with disabling the view state.
As everybody does I disabled the view state at the page directive as follows
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Mvc3TestApp.WebForm1" Debug="true" EnableViewState="false" EnableViewStateMac="false" EnableSessionState="True" ViewStateMode="Disabled" ViewStateEncryptionMode="Never" EnableEventValidation="false" %>
This makes me to do something myself and started debugging. After some time I could see that I can disable by overriding the LoadPageStateFromPersistenceMedium method. It was very simple.
protected override object LoadPageStateFromPersistenceMedium() { return null; //return base.LoadPageStateFromPersistenceMedium(); }
1 comment:
Works perfect to me, thank you very much ...!!
Post a Comment