Story:intermittente non valido Viewstate nelle pagine Web ASP.NET
Im lo sviluppo di un grafico che visualizza Vacanze (ferie annuali, usate le vacanze", ecc ...) la per la selezione di un anno, unità di business, e un reparto da una casella combinata finora im felice Pentecoste il risultato che sta lavorando ... ma se passare da questa reparti dopo qualche tempo facendo questo ottengo questo strano errore ... informazioni *
lo stato non è valido per questa pagina e potrebbe essere danneggiato
[Nessun righe delle fonti rilevanti]
così mi scorrono po 'giù e abbiamo trovato questo
[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: ....
Così ho controllato la mia vista stati e non ho trovato un errore di o qualcos'altro ..
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;
}
}
qui è t egli messaggio di errore
[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/////AQAAAAAAAAAMAgAAAElIb2xpZGF5VHJhY2tlckRhdGEsIFZlcnNpb249MS4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsDAMAAABVU3lzdGVtLkRhdGEuRW50aXR5LCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQUBAAAAKEhvbGlkYXlUcmFja2VyLkRhdGEuTW9kZWwuSHRCdXNpbmVzc1VuaXQFAAAAD19CdXNpbmVzc1VuaXRJZAVfTmFtZQ9fT3JnYW5pc2F0aW9uSWQbRW50aXR5T2JqZWN0K19yZWxhdGlvbnNoaXBzF0VudGl0eU9iamVjdCtfZW50aXR5S2V5AAEABAQICDNTeXN0ZW0uRGF0YS5PYmplY3RzLkRhdGFDbGFzc2VzLlJlbGF0aW9uc2hpcE1hbmFnZXIDAAAAFVN5c3RlbS5EYXRhLkVudGl0eUtleQMAAAACAAAAFAAAAAYEAAAABUZTLUlTDgAAAAkFAAAACQYAAAAFBQAAADNTeXN0ZW0uRGF0YS5PYmplY3RzLkRhdGFDbGFzc2VzLlJlbGF0aW9uc2hpcE1hbmFnZXICAAAABl9vd25lcg5fcmVsYXRpb25zaGlwcwQDKEhvbGlkYXl...]
[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
Ecco il mio 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;
}
}
}
}
ho bisogno di qualcosa di più non esitate a chiedere a me !!
Grazie per l'aiuto e la risposta veloce
Aggiungete/rimuovete dinamicamente i controlli dall'albero di controllo quando passate da un reparto all'altro? – jadarnel27
@ jadarnel27 Non sto aggiungendo e inoltre non rimuovo i controlli semplicemente filtrando il mio grafico –
Utilizzi la modalità integrata o classica per il pool di applicazioni? – polybios