Laurent Duveau
ViewState Chunking en ASP.NET 2.0
Comment résoudre un problème particulier de ViewState monstrueux.
Par Laurent Duveau publié le 23/05/2007 à 06:45, lu 12804 fois,
Quand le ViewState de vos pages devient exagérément gros cela peut entrainer des problèmes avec les firewalls et proxys qui vont bloquer l'accès aux pages contenant un ViewState de taille si imposante. Pour contourner ce problème ASP.NET 2.0 à introduit le mécanisme de ViewState chunking. Mais la première chose à faire si votre ViewState est gros à ce point est de vous demander pourquoi, et la façon de l'optimiser (ou même le désactiver).
Donc ASP.NET 2.0 permet d'éclater le ViewState en plusieurs champs en utilisant l'attribut MaxPageStateFieldLength du fichier web.config dans la section <pages>. Celui-ci indique la taille maximum (en bytes) allouée à chaque champ ViewState car si la taille réelle dépasse cette valeur alors le ViewState sera éclaté en plusieurs champs. Par défaut, la valeur est -1 ce qui signifie qu'aucune taille maximum n'est imposée aux champs ViewState.
Exemple de ViewState avant (volontairement tronqué) :

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"

value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88KwANAGQYAQUJR3JpZFZpZXcxD2dk4sjERFfnDXV/hMFGAL10HQUnZbk=" />

Modification du web.config:

<pages maxPageStateFieldLength="40">

Exemple de ViewState après :

<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="3" />

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88" />

<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="KwANAGQYAQUJR3JpZFZpZXcxD2dk4sjERFfnDXV/" />

<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="hMFGAL10HQUnZbk=" />

Veuillez noter que ceci N'EST PAS une façon d'optimiser la taille du ViewState !! Ceci est une façon de contourner un possible problème technique avec les ViewState énormes et les firewalls.
 
» Démarrer une discussion