Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Eccezione incompresa: ViewState non valido [attenzione lungo]
sabato 14 giugno 2008 - 15.37
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
nullatore
Profilo
| Junior Member
191
messaggi | Data Invio:
sab 14 giu 2008 - 15:37
Salve gente,
sto da un pò di tempo tenendo d'occhio le eccezioni che la mia webapplication solleva. Ce ne sono 2 a cui non sono proprio riuscito ancora a dare una risposta! Per pulizia del post ne riporto solo una. La seconda la propongo in un altro post.
Potete buttargli un'occhio?
Grazie!
----------ECCEZIONE N.1-------------------
System.Web.HttpException: Client disconnesso.
<INNER EXCETION>
System.Web.UI.ViewStateException: Viewstate non valido.
Client IP: 87.6.227.77
Port: 25643
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)
ViewState: /wEPDw[....elimino una parte per praticità....]8GAgJ... ---> System.FormatException: Carattere non valido in una stringa Base 64.
in System.Convert.FromBase64String(String s)
in System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
in System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState)
in System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState)
in System.Web.UI.HiddenFieldPageStatePersister.Load()
--- Fine dell'analisi dello stack dell'eccezione interna ---
Alcuni commento che potrebbero essere utili:
-questa eccezione viene generata sempre dallo stesso utente che lavora in un'area riservata (dietro FormsAuthentication) (a cui sono risalito tramite IP), sempre dallo stesso IP e sempre dallo stesso UserAgent
-viene sollevata sempra dalla stessa pagina .aspx
-non viene sollevata ognivolta che viene lanciata la pagina .aspx in questione (per ora occorre con tempi randomici)
-nella pagina non faccio utilizzo deliberato del ViewState
-il viewstate che viene riportato nell'exception è sempre lo stesso o al massimo si alterna ad un altro (anch'esso ricorrente).
- questa eccezione - diversamente dalle altre - non scatena un redirect alla pagine che ho definito nel Web.config, al nodo <customErrors> bensi sembrerebbe "consumarsi" nell'Application_Error (da dove prelevo l'eccezione e la trascrivo nel mio file degli errori)
-l'utente in questione non mi ha mai riportato alcun problema su questa pagina.
- nella pagina .aspx incriminata, e precisamente nell'OnLoad del codebehind (e per ogni postback) inserisco un META TAG di refresh (ogni 5 min).
riporto il codice
{
HtmlMeta refrsh = new HtmlMeta();
refrsh.HttpEquiv = "refresh";
refrsh.Content = "300";
this.Page.Header.Controls.Add(refrsh);
}
~nullatore~
mai dire corto circuito virtuale
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
sab 14 giu 2008 - 16:44
Ciao,
hai già verificato che non sia dovuto ad uno dei casi citati qui:
http://support.microsoft.com/kb/555353
?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
nullatore
Profilo
| Junior Member
191
messaggi | Data Invio:
sab 14 giu 2008 - 17:06
http://support.microsoft.com/kb/555353
riporta questa interessante situazione:
"Il pool di applicazioni che si ricicla"
[IIS 6 riciclerà periodicamente il pool di applicazioni per mantenere l'integrità del pool di applicazioni. All'istanza, quando si ricicla il pool di applicazioni, le richieste di browser possono generare talvolta un errore viewstate non valido. In questo caso, la correzione è regolare le impostazioni dei pool di applicazioni in modo che sia meno probabile che riciclare si sia verificato agli intervalli massimi. Questo problema rappresenta un errore poiché il pool di applicazioni deve gestire questa condizione correttamente.]
Che ne pensi?
Visto nella pagina è impostato un refresh automatico lato cliente (ogni 5 min tramite meta tag) e visto che l'utente potrebbe lasciare questa pagina in 'ascolto' anche per svariati minuti o ore della giornata, potrebbe ricadere in questo "Reciclo della Applicazioni"?
~nullatore~
mai dire corto circuito virtuale
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
sab 14 giu 2008 - 20:37
Si sicuramente può essere quello.
E' capitato più volte anche a me. Controlla le impostazioni del pool e magari prova a verificare il comportamento del cliente. Io in questi casi imposto un riciclo automatico ad una certa ora della notte e tolgo quello ogni xx minuti. In questo modo se vedo che l'errore avviene in un orario vicino a quello di riciclo capisco subito che si tratta di quello.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
nullatore
Profilo
| Junior Member
191
messaggi | Data Invio:
dom 15 giu 2008 - 10:34
>Si sicuramente può essere quello.
>E' capitato più volte anche a me. Controlla le impostazioni del
>pool e magari prova a verificare il comportamento del cliente.
>Io in questi casi imposto un riciclo automatico ad una certa
>ora della notte e tolgo quello ogni xx minuti. In questo modo
>se vedo che l'errore avviene in un orario vicino a quello di
>riciclo capisco subito che si tratta di quello.
>-----------------------------------------
>Rossi Marco
>
http://blogs.dotnethell.it/rossimarko
Una manciata di domande:
Dove trovo le impostazioni del pool?
Quale aspetto del comportamento del cliente dovrei tenere sott'occhio?
E cosa perdo se riduco i recicli del pool?
~nullatore~
mai dire corto circuito virtuale
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
dom 15 giu 2008 - 11:11
>Dove trovo le impostazioni del pool?
All'interno di IIS 6, c'è una cartella Application Pools con l'elenco. Se vuoi vedere le proprietà hai la relativa voce sul menu che compare premendo il tasto destro.
Prima comunque devi controllare nelle proprietà della virtual o del tuo sito quale application pool è stato associato. Se è quello di default io ti consiglio di crearne un altro che sia utilizzato esclusivamente dal tuo sito, così lo puoi modificare a tuo piacimento.
>Quale aspetto del comportamento del cliente dovrei tenere sott'occhio?
Se hai modo di raggiungerlo (via mail o telefonicamente) potresti chiedere se è sua abitudine lasciare aperto il browser tutto il giorno, giusto per avere una conferma
>E cosa perdo se riduco i recicli del pool?
Non perdi niente, il riciclo non fa altro che far ripartire il pool, così da liberare tutta la memoria usata. L'unico inconveniente è appunto che tutte le operazioni in corso vengono azzerate, è per quello che di solito si pianifica di notte.
Se ti servono maggiori informazioni sui pool:
http://www.microsoft.com/italy/technet/community/mvp/editoriali/iis6.mspx
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
nullatore
Profilo
| Junior Member
191
messaggi | Data Invio:
dom 15 giu 2008 - 12:08
>>Dove trovo le impostazioni del pool?
>
>All'interno di IIS 6, c'è una cartella Application Pools con
>l'elenco. Se vuoi vedere le proprietà hai la relativa voce sul
>menu che compare premendo il tasto destro.
>Prima comunque devi controllare nelle proprietà della virtual
>o del tuo sito quale application pool è stato associato. Se è
>quello di default io ti consiglio di crearne un altro che sia
>utilizzato esclusivamente dal tuo sito, così lo puoi modificare
>a tuo piacimento.
>
Ok. Il server di deploy è una macchina dove non ho accesso (hoster esterno). Quindi penso che non posso fare nulla...
>>Quale aspetto del comportamento del cliente dovrei tenere sott'occhio?
>Se hai modo di raggiungerlo (via mail o telefonicamente) potresti
>chiedere se è sua abitudine lasciare aperto il browser tutto
>il giorno, giusto per avere una conferma
>
Sì, il cliente lascia aperto il browswer quasi tutta la giornata, e l'90% di essa sulla pagina incriminata.
>>E cosa perdo se riduco i recicli del pool?
>
>Non perdi niente, il riciclo non fa altro che far ripartire il
>pool, così da liberare tutta la memoria usata. L'unico inconveniente
>è appunto che tutte le operazioni in corso vengono azzerate,
>è per quello che di solito si pianifica di notte.
>
Strano però...questo inconveniente capita solo di giorno in orari lavorativi
~nullatore~
mai dire corto circuito virtuale
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
dom 15 giu 2008 - 14:41
>
>Strano però...questo inconveniente capita solo di giorno in orari
>lavorativi
>
Scusami, mi sono spiegato male. Di default il pool non si ricicla di notte ma dopo XX minuti di attività. Intendevo dire che io di solito lo imposto perchè si ricicli di notte per creare meno disservizi agli utenti.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
nitrev
Profilo
| Newbie
1
messaggi | Data Invio:
mar 25 set 2012 - 12:20
credo dipenda dal user agent. Si verifica solo con safari merd. Confermate?
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !