Domanda

Supponiamo che tu abbia una pagina aspx che non si basa sulla sessione, ma si basa su viewstate per la persistenza tra postback.

Se un utente accede a questa pagina e parte per un lungo pranzo, viewstate sarà comunque valido al suo ritorno?

È stato utile?

Soluzione

Nessun ViewState viene mantenuto come parte del processo PostBack. Puoi, tuttavia, sovrascrivere il SavePageStateToPersistenceMedium della classe Page e LoadPageStateFromPersistenceMedium (), per implementare quel comportamento se lo si desidera. Per ulteriori informazioni leggi Informazioni su ASP.NET ViewState .

Nota che Pagina ViewState è memorizzato nella Sessione, quindi se la Sessione scade, ViewState andrà perso. Non direi che questo sta scadendo ViewState, ma sì, verrà distrutto dopo il timeout della sessione.

Altri suggerimenti

Viewstate stesso non scade. Dal momento che è postato in un modulo, può essere ricostituito in qualsiasi momento.

Secondo MSDN : ". .. è possibile che lo stato di visualizzazione scada se una pagina non viene posticipata entro il tempo di scadenza della sessione " ;. Quindi, in un certo senso, può scadere se la sessione lo fa, ma viewstate non scade direttamente. Dato che non stai usando lo stato della sessione, non devi preoccuparti della scadenza implicita.

Nota che non avrei detto che fosse scaduto. Quello era MS che ho citato nel loro articolo intitolato ViewState di controllo

Viewstate non scade.

Tutti i dati viewstate vengono archiviati sul client e inviati al server quando l'utente esegue un postback.

Ciò ha alcune implicazioni molto interessanti e viene spiegato in modo molto approfondito qui .

Inoltre, come gotcha, per impostazione predefinita ASP.NET crittografa ViewState con una chiave generata automaticamente. Questo può essere sovrascritto con l'elemento MachineKey nel file web.congif. Anche se ViewState non scadrà, può diventare non valido se per decrittografare ViewState viene utilizzata una chiave generata automaticamente diversa, ad esempio dopo un ripristino IIS, la ridistribuzione di un'applicazione o l'utilizzo di un server diverso in una Web farm. Se stai pensando di archiviare viewstate per lunghi periodi di tempo, fai attenzione a come è crittografato / decrittografato.

http://msdn.microsoft.com/en-us/library/ ms998288.aspx

Sì, ViewState scade in determinate condizioni. Ad esempio quando si utilizza iframe: s o quando si esegue la manutenzione di " live " connessione al server con postback regolari. Quindi potresti voler esaminare questa opzione: <sessionPageState historySize="9"/>, che in realtà codifica quanti & Quot; risultati postback & Quot; sono memorizzati nella Sessione (se si utilizza SessionPageStatePerster). Ogni postback memorizza ViewState fino alla fine della coda in sessione [& Quot; __ VIEWSTATEQUEUE & Quot;] ed elimina ViewState & Quot; troppo vecchio & Quot ;. E come pensi che SessionPageStatePerster decida quali ViewState sono troppo vecchi .. configurando una storia arbitraria Costante di dimensione in web.config .. Omg! Anch'io per sempre trovare questo problema ... Il mio odio verso la programmazione asp.net è indescrivibile ora .. grrr ...

Viewstate non scade, finché sono ancora nella pagina, sarà ancora lì e funzionante.

ViewState persisterà da POST a POST. In realtà è memorizzato all'interno di un campo nascosto nel modulo in modo da poter essere ripubblicato continuamente sul tuo server.

Finché non fai affidamento sulla Sessione, non dovresti avere problemi a ricostruire lo stato della pagina. È facile testare il codice di stato della tua Pagina, se vuoi: imposta la tua sessione in modo che scada dopo 60 secondi nel tuo web.config quindi carica la tua pagina, attendi un po 'più di un minuto (vai su Stack Overflow e rispondi ad alcune domande) e quindi fai clic su un pulsante sulla tua pagina.

Mi dispiace rivivere questo vecchio thread, ma ora sono disponibili nuove informazioni:

Sì, i ViewState scadono . Vengo da 19 ore alla ricerca di un problema con ViewStates che perde i suoi valori tra postback a lungo intervallo di tempo. Mi ci è voluto un po 'di tempo per leggere i documenti MSDN e le risposte Stackoverflow dicendo che era praticamente impossibile accadere a meno che non fosse impiegata un'implementazione di archiviazione ViewState personalizzata, che, ora so, non è vero.

Il mio problema si stava verificando in un ambiente SharePoint 2013. Il servizio noto come cache distribuita (a.k.a. AppFabric ) esegue la memorizzazione nella cache di ViewState e ha un Time to Live associato. Puoi trovare maggiori informazioni qui: http: // blogs .msdn.com / b / besidethepoint / archive / 2013/03/27 / AppFabric-caching-e-sharepoint-1.aspx

L'interessante informazione può essere trovata in questa frase: " Per migliorare le prestazioni della pagina, a partire da SharePoint 2013 SharePoint memorizza nella cache i dati ViewState lato server anziché trasferirli avanti e indietro ai client. "

Spero che queste informazioni aiutino qualcuno così disperato come ero 19 ore fa.

ViewState è conservato in un campo nascosto nella pagina stessa. Quindi, finché l'utente ha la pagina, avrà ViewState. Ma se la tua app disconnette automaticamente l'utente dopo un certo periodo di tempo, avere ancora ViewState potrebbe non fargli nulla di buono.

Per impostazione predefinita, Viewstate è incluso con il contenuto html come input nascosto. Ciò significa che non scadrà, ma che tutto in viewstate deve essere caricato dal browser dell'utente. Dal momento che in genere è la parte più lenta della connessione in un sito pubblico, mettere un sacco di cose in viewstate può rapidamente far sembrare il tuo sito molto lento.

La risposta breve è: no.

La risposta più lunga è: dipende dall'implementazione dell'archiviazione ViewState. È possibile fornire un'implementazione personalizzata di ViewState che potrebbe scadere dopo un determinato periodo di tempo. Ad esempio, è possibile archiviare ViewState nel database o sul disco e inviare solo alcuni riferimenti al valore memorizzato in un campo nascosto. Quindi è possibile utilizzare l'elaborazione batch per rimuovere dati ViewState obsoleti o eseguire la scadenza su richiesta.

No Viewstate non scade. Dopo il reindirizzamento ad un'altra pagina, il valore dello stato di visualizzazione viene perso o scade viewstate. per maggiori dettagli http: //www.c-sharpcorner .com / UploadFile / 78d182 / Asp-Net-stato-gestione-tecniche /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top