Il ViewState in Session con i PageStatePersister di ASP.NET 2.0

di Marco Leoncini, in UserScript, ASP.NET 2.0, System.Web.UI.Adapters,

Per attenuare gli aspetti "negativi" della natura stateless del protocollo HTTP, ASP.NET ha introdotto un meccanismo per conservare lo stato tra le diverse richieste, chiamato ViewState.

Ad occuparsi di persistere le informazioni contenute nel ViewState nella versione 2.0 di ASP.NET sono le classi derivate dalla classe astratta PageStatePersister.

Il meccanismo predefinito di persistenza mantiene lo stato sotto forma di una stringa codificata in base64 e memorizzata in campo nascosto nella pagina, utilizzando la classe HiddenFieldPageStatePersister.

Anche se adeguato nella maggior parte dei casi, in scenari particolari, con limitate capacità di banda o per dispositivi che non supportano campi nascosti, queste informazioni possono essere memorizzate nella sessione corrente utilizzando SessionPageStatePersister.

Per prima cosa realizziamo un classe derivata da PageAdapter, eseguiamo l'override del metodo GetStatePersister() .

[AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
namespace ASPItalia.com
{
public class MyPageAdapter : System.Web.UI.Adapters.PageAdapter
  {

    public override PageStatePersister GetStatePersister()
    {
      return new SessionPageStatePersister(this.Page);
    }
  }
}

Essendo il sistema di persistenza del ViewState legato all'adaptive rendering ed alle capacità del client, è necessario aggiungere nella cartella App_Browsers un file con le seguenti righe di codice.

<browsers>
  <browser refID="Default" >
    <controlAdapters>
     <adapter
      controlType="System.Web.UI.Page"
      adapterType="ASPItalia.com.MyPageAdapter" />
    </controlAdapters>
  </browser>
</browsers>

In uno scenario reale, infatti, utilizzeremo SessionPageStatePersister solo per alcuni tipi di client in particolare, dato che potremmo impattare negativamente sulle performance dell'applicazione.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi