Intermittent Invalid Browsing Error in ASP.NET Web Pages

History:

Im developing a diagram that displays holidays (annual holidays, worked holidays), etc.) for choosing the year, business unit and department from the Combo window, still happy, but the result it works ... but if you switch between these departments after a while, I get this strange error ... *

Status information is invalid for this page and may be corrupted.

[There are no corresponding lines of source code]


so I scrolled through the list a bit and found this

[ViewStateException: Invalid viewstate. Client IP: ::1 Port: 27968 Referer: http://localhost/HolidayTracker/Report/VacationChart.aspx Path: /HolidayTracker/Report/VacationChart.aspx User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0) ViewState: .... 

So, I checked my view states and I did not find an error or anything else.

  private HtBusinessUnit selectedBU { get { return (HtBusinessUnit)ViewState["selectedBu"]; } set { ViewState["selectedBu"] = value; } } private HtDepartment selectDep { get { return (HtDepartment)ViewState["selectedDep"]; } set { ViewState["selectedDep"] = value; } } private string selectedYear { get { return ViewState["selectedYear"] != null ? ViewState["selectedYear"].ToString() : ""; } set { ViewState["selectedYear"] = value; } } 

here is the error message

 [ArgumentException: Invalid token for impersonation - it cannot be duplicated.] System.Security.Principal.WindowsIdentity.CreateFromToken(IntPtr userToken) +3597947 System.Security.Principal.WindowsIdentity..ctor(SerializationInfo info) +187 System.Security.Principal.WindowsIdentity..ctor(SerializationInfo info, StreamingContext context) +51 [TargetInvocationException: Exception has been thrown by the target of an invocation.] System.RuntimeMethodHandle.SerializationInvoke(IRuntimeMethodInfo method, Object target, SerializationInfo info, StreamingContext& context) +0 System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context) +298 System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder) +45 System.Runtime.Serialization.ObjectManager.DoFixups() +230 System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) +137 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) +186 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream) +15 System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader reader) +1873 System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader reader) +334 System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader reader) +420 System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader reader) +432 System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader reader) +420 System.Web.UI.ObjectStateFormatter.Deserialize(Stream inputStream) +139 [ArgumentException: The serialized data is invalid.] System.Web.UI.ObjectStateFormatter.Deserialize(Stream inputStream) +203 System.Web.UI.ObjectStateFormatter.Deserialize(String inputString, Purpose purpose) +481 System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter2.Deserialize(String serializedState, Purpose purpose) +8 System.Web.UI.Util.DeserializeWithAssert(IStateFormatter2 formatter, String serializedState, Purpose purpose) +40 System.Web.UI.HiddenFieldPageStatePersister.Load() +127 [ViewStateException: Invalid viewstate. Client IP: ::1 Port: 27795 Referer: http://localhost/HolidayTracker/Report/VacationChart.aspx Path: /HolidayTracker/Report/VacationChart.aspx User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0) ViewState: /wEPDwULLTE2OTYyMjA5MzkPFgQeCnNlbGVjdGVkQnUy1p4BAAEAAAD/////...] [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.HiddenFieldPageStatePersister.Load() +266 System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +88 System.Web.UI.Page.LoadAllState() +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6704 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +245 System.Web.UI.Page.ProcessRequest() +72 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21 System.Web.UI.Page.ProcessRequest(HttpContext context) +58 ASP.report_vacationchart_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\holidaytracker\ad68c354\56d80455\App_Web_k5s5ajkf.1.cs:0 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +341 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69 

Here is my Global.asax.cs

 namespace HolidayTracker { public class Global : System.Web.HttpApplication { void Application_Start(object sender, EventArgs e) { // Code that runs on application startup } void Application_End(object sender, EventArgs e) { // Code that runs on application shutdown } void Application_Error(object sender, EventArgs e) { // Code that runs when an unhandled error occurs } void Session_Start(object sender, EventArgs e) { // Code that runs when a new session is started if (HttpContext.Current.User != null && HttpContext.Current.User is HtUser) { HtUser user = (HtUser)HttpContext.Current.User; Session["UserId"] = user.UserId; Session["User"] = user.LastName+" "+user.FirstName ; if (user.HtDepartments.Any() && user.HtDepartments.SingleOrDefault().HtBusinessUnit != null) { int BusinessUnitId = user.HtDepartments.First().HtBusinessUnit.BusinessUnitId; Session["BusinessUnnitId"] = BusinessUnitId; } } } void Session_End(object sender, EventArgs e) { // Code that runs when a session ends. // Note: The Session_End event is raised only when the sessionstate mode // is set to InProc in the Web.config file. If session mode is set to StateServer // or SQLServer, the event is not raised. //if (Session["UserId"] == null) //{ // Response.ClearContent(); // Response.Write("Not agine"); // Response.End(); //} //else //{ // Response.Write(Session["UserId"].ToString()); //} } protected void WindowsAuthentication_OnAuthenticate(Object source, WindowsAuthenticationEventArgs e) { if (Request.Cookies.Get(Constants.AUTHORIZATION_COOKIE_NAME) != null) return; String strUserIdentity; FormsAuthenticationTicket formsAuthTicket; HttpCookie httpCook; String strEncryptedTicket; AdLookup adLookup = new AdLookup(); strUserIdentity = e.Identity.Name; bool loggedIn = false; String email = null; String role = null; email = strUserIdentity; HtUser userInfo = null; if (email != null && email != "") { userInfo = HtUser.GetByLogin(e.Identity, email); if (userInfo != null && userInfo.UserName.Length > 0) { loggedIn = true; role = HtUser.GetUserRoleString(userInfo); } //Checks if user is in domain else { userInfo = adLookup.GetAdUserByUsername(HtUser.getUserNameFromDomainString(email)); if (userInfo != null && userInfo.UserName.Length > 0) { loggedIn = true; role = UserRoles.User; } } } //} if (loggedIn) { formsAuthTicket = new FormsAuthenticationTicket(1, email, DateTime.Now, DateTime.Now.AddMinutes(60), false, role); strEncryptedTicket = FormsAuthentication.Encrypt(formsAuthTicket); httpCook = new HttpCookie(Constants.AUTHORIZATION_COOKIE_NAME, strEncryptedTicket); Response.Cookies.Add(httpCook); HttpContext.Current.User = userInfo; } else { HttpContext.Current.User = null; } } } } 

I need something more, feel free to ask me.

Thanks for the help and quick reply.

+6
source share
1 answer

Oo I see that this is not something big, but I would highly recommend replacing your view states with just a “normal” solution, just using the values ​​from your Rad Combo boxes is simpler, but this is probably not a real solution for you problem, because I see that it’s really strange, I don’t see a mistake here, it seems to me that everything is fine with me. but if you submit your updated code with comments.

If you have problems, feel free to ask! ¨

PS: If you wet the solution, contact me!

0
source

All Articles