ASP.NET View State è un meccanismo di gestione dello stato lato client, utilizzato per salvare la pagina e controllare i valori. ASP.NET View State è un campo nascosto nella pagina come stringa Base64 codificata. Viene inviato al client come parte di ogni risposta e viene restituito al server dal client come parte di un postback.
1 2 3 4 5 6 7 8 9 10 |
<input id="__VIEWSTATE" type="hidden" name="__VIEWSTATE" value="wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kFgQ CQ9kFgICBQ9kFgJmD2QWAgIBDxYCHhNQcm2aW91c0NvbnRyb2xNb2RlCymIAU1pY3 Jvc29mdC5TaGFyZVBvaW50LldlYkNvbnRyb2xzLlNQQ29udHJbE1vZGUsIE1pY3Jv 29mdC5TaGFyZVBvaW50LCBWZXJzaW9uPTEyLjAuMC4wLCBDdWx0dXJlPW5ldXRyWw sIFB1YmxpY0tleVRva2VuPTcxZTliY2UxMTFlOTQyOWMBZAIDD2QWDgIBD2QWBgUm Z19lMzI3YTQwMF83ZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD2RkZAUmZ18yN DQ3NmI4YV8xY2FlXzRmYTVfOTkxNl8xYjIyZGYwNmMzZTQPZBYCZg8PZBYCHgVjbG DQWBgUmZ19lMzI3YTQwMF83ZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD2...."/> |
Problemi con ASP.NET View State inMicrosoft Azure
ASP.NET View State è una funzionalità molto importante per le applicazioni distribuite come ruoli Web/di lavoro in Cache di Microsoft Azure. Tuttavia, lo stato di visualizzazione presenta alcuni problemi che è necessario comprendere e risolvere per trarne pieno vantaggio.
Prima di tutto, ASP.NET View State diventa molto grande soprattutto quando l'applicazione Microsoft Azure ASP.NET ha molti controlli pesanti sulle sue pagine. Ciò si traduce in un carico utile dello stato di visualizzazione pesante che viaggia avanti e indietro tra il browser e l'applicazione a ogni richiesta. Il carico utile dello stato di visualizzazione pesante rallenta le prestazioni e si traduce anche in un consumo di larghezza di banda aggiuntivo, soprattutto quando è medio ASP.NET View State finisce in centinaia di kilobyte e quando milioni di tali richieste vengono elaborate all'interno dell'applicazione Microsoft Azure.
ASP.NET View State è anche un rischio per la sicurezza quando si inviano dati riservati come parte dello stato di visualizzazione al client. Questi dati sono vulnerabili agli attacchi e possono essere manomessi da un utente malintenzionato, il che rappresenta una seria minaccia alla sicurezza.
Soluzione a ASP.NET View State Problematica
Puoi risolvere ASP.NET View State problemi nelle applicazioni Microsoft Azure archiviando l'effettivo ASP.NET View State lato server in una cache distribuita e non rispedirlo mai al browser insieme al payload della richiesta.
NCache for Azure è una cache distribuita estremamente veloce e scalabile per Microsoft Azure. Ti permette di memorizzare reale ASP.NET View State in cache distribuita sul lato server e invece invia un piccolo token come stato di visualizzazione al client in un payload della richiesta. Ciò riduce drasticamente la dimensione del carico utile della richiesta. Il token View State viene quindi utilizzato sul lato server per trovare il diritto ASP.NET View State in NCache per cache distribuita di Azure nei postback. Un carico utile più piccolo risolve i problemi relativi alle prestazioni e all'utilizzo della larghezza di banda perché non hai più a che fare con uno stato di visualizzazione enorme su ogni richiesta nell'applicazione Microsoft Azure. Inoltre, Visualizza stato memorizzato sul lato server in NCache per Azure la cache distribuita non è mai esposta ai client, quindi risolve i problemi di sicurezza sopra menzionati.
Ecco un esempio di un token utilizzato al posto di ASP.NET View State con NCache per Azzurro ASP.NET View State fornitore:
1 2 |
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="cf8c8d3927ad4c1a84dsadfgsdsfdsda7f891bb89185" /> |
utilizzando NCache per Azzurro ASP.NET View State Caching
Passo 1: Crea un file app.browser nella directory App_browser. Collega gli adattatori di pagina al file app.browser come segue:
File: App_browserapp.browser
1 2 3 4 5 6 |
<browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.Page" adapterType="Alachisoft.NCache.Adapters.PageAdapter" /> </controlAdapters> </browser> |
Passo 2: Aggiungi il seguente riferimento all'assembly nella sezione di compilazione del file web.config.
File: web.config
1 2 3 4 5 6 |
<compilation defaultLanguage="c#" debug="true" targetFramework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.Adapters, Version=1.0.0.0, Culture=neutral, PublicKeyToken=CFF5926ED6A53769"/> </assemblies> </compilation> |
Passo 3: Registrati NCache per la sezione di configurazione di Azure nel file web.config.
File: web.config
1 2 3 4 5 6 7 |
<configSections> <sectionGroup name="ncContentOptimization"> <section name="settings" type="Alachisoft.NCache.ContentOptimization.Configurations.ContentSettings" allowLocation="true" allowDefinition="Everywhere"/> </sectionGroup> </configSections> |
Passo 4: Specifica le impostazioni per la tua sezione di configurazione nel file web.config (che è stato registrato sopra). Queste impostazioni controllano NCache per Azzurro ASP.NET View State Funzionalità di memorizzazione nella cache.
File: web.config
1 2 3 4 5 6 7 8 9 |
<ncContentOptimization> <settings viewstateThreshold="12" enableViewstateCaching="true" enableTrace="false" groupedViewStateWithSessions="false" <cacheSettings cacheName="myCache" maxViewStatesPerSession="3"> <expirationtype="Absolute" duration="1"/> </cacheSettings> </settings> </ncContentOptimization> |
Conclusione
NCache per Azure offre un'opzione di non modifica del codice per l'archiviazione delle applicazioni Microsoft Azure ASP.NET View State lato server in una cache distribuita. NCache per Azzurro ASP.NET View State il provider ottimizza le prestazioni riducendo il carico utile delle richieste e il consumo di larghezza di banda, affrontando i problemi di sicurezza relativi allo stato di visualizzazione lato client.
Scaricare NCache Open Source ed eseguilo su Microsoft Azure.
Hai ragione NCache inviando la stringa originale ad ASP.NET.
Per quanto riguarda lo stato di visualizzazione non memorizzato nella cache, deve esserci qualcosa di sbagliato nella tua configurazione specifica per il tuo ambiente. A breve ti invieremo un'e-mail all'indirizzo e-mail registrato per coordinarti e aiutarti ulteriormente.
Hi
Ho configurato tutti i passaggi che hai descritto nell'articolo, ma la stringa dello stato di visualizzazione non è cambiata e non è diventata di dimensioni inferiori, l'idea principale è ncache sostituire la stringa con la propria stringa e quindi, ncache nel tempo di esecuzione passerà la stringa originale ad asp.net, sbaglio?
per favore fatemi sapere, come posso ottenere maggiori informazioni o se sarà possibile ottenere assistenza remota?
Sono felice che tu ci abbia pensato così.
Per impostazione predefinita, NCache mantiene tutti i ViewStates a tempo indeterminato nella cache, indipendentemente dalla data di emissione del post back. Pertanto, tutte le richieste dello stato di visualizzazione verranno gestite dalla cache.
D'altra parte, puoi anche associare le scadenze della base dei tempi (assoluta o scorrevole) a ViewState e impostare il valore sufficientemente alto da evitare la cache miss anche dopo un lungo tempo indietro di pentole.
Puoi anche raggruppare ViewState con NCache Sessioni. In questo modo, quando una sessione utente viene rimossa dalla cache, tutti i ViewState correlati vengono rimossi automaticamente. Questo aiuta a evitare un carico di memoria aggiuntivo sulla cache fornendo le migliori prestazioni.
NCache suona abbastanza utile.
In caso di viewstate in page, la pagina può essere pubblicata anche dopo molto tempo senza alcun impatto.
Che aspetto ha e come funziona il NCache gestire questo scenario?