ASP.NET View State est un mécanisme de gestion d'état côté client, qui est utilisé pour enregistrer les valeurs de page et de contrôle. ASP.NET View State est un champ masqué sur la page sous la forme d'une chaîne encodée en Base64. Il est envoyé au client dans le cadre de chaque réponse et est renvoyé au serveur par le client dans le cadre d'une publication.
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...."/> |
Problèmes avec ASP.NET View State dans Microsoft Azure
ASP.NET View State est une fonctionnalité très importante pour les applications déployées en tant que rôles Web/de travail dans Cache Microsoft Azure. Cependant, l'état d'affichage s'accompagne de certains problèmes que vous devez comprendre et résoudre afin d'en tirer pleinement parti.
Tout d'abord, ASP.NET View State devient très volumineux, en particulier lorsque votre application Microsoft Azure ASP.NET comporte de nombreux contrôles lourds sur ses pages. Cela entraîne une lourde charge utile d'état d'affichage qui va et vient entre le navigateur et votre application à chaque demande. Une lourde charge utile d'état d'affichage ralentit les performances et entraîne également une consommation de bande passante supplémentaire, en particulier lorsqu'une moyenne ASP.NET View State se retrouve dans des centaines de kilo-octets et lorsque des millions de ces demandes sont traitées dans votre application Microsoft Azure.
ASP.NET View State est également un risque de sécurité lors de l'envoi de données confidentielles dans le cadre de l'état d'affichage au client. Ces données sont vulnérables aux attaques et peuvent être altérées par un attaquant, ce qui constitue une grave menace pour la sécurité.
Solution à ASP.NET View State Problèmes
Vous pouvez résoudre ASP.NET View State problèmes dans les applications Microsoft Azure en stockant le ASP.NET View State côté serveur dans un cache distribué et ne le renvoyez jamais au navigateur avec la charge utile de la demande.
NCache for Azure est un cache distribué extrêmement rapide et évolutif pour Microsoft Azure. Il vous permet de stocker réel ASP.NET View State dans le cache distribué côté serveur et envoie à la place un petit jeton en tant qu'état d'affichage au client dans une charge utile de demande. Cela réduit considérablement la taille de la charge utile de la demande. Le jeton d'état de la vue est ensuite utilisé côté serveur pour trouver le bon ASP.NET View State in NCache pour Azure Distributed Cache sur les publications. Une charge utile plus petite résout les problèmes liés aux performances et à l'utilisation de la bande passante, car vous n'êtes plus confronté à un état d'affichage énorme à chaque demande dans votre application Microsoft Azure. De plus, l'état d'affichage stocké côté serveur dans NCache pour le cache distribué Azure n'est jamais exposé aux clients, il résout donc les problèmes de sécurité mentionnés ci-dessus.
Voici un exemple d'un jeton utilisé à la place de ASP.NET View State comprenant NCache pour Azur ASP.NET View State fournisseur:
1 2 |
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="cf8c8d3927ad4c1a84dsadfgsdsfdsda7f891bb89185" /> |
En utilisant NCache pour Azur ASP.NET View State Cache haute performance
Étape 1: Créez un fichier app.browser dans le répertoire App_browsers. Branchez les adaptateurs de page dans le fichier app.browser comme suit :
Fichier : App_browsersapp.browser
1 2 3 4 5 6 |
<browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.Page" adapterType="Alachisoft.NCache.Adapters.PageAdapter" /> </controlAdapters> </browser> |
Étape 2: Ajoutez la référence d'assembly suivante dans la section de compilation du fichier web.config.
Fichier : 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> |
Étape 3: Inscription NCache pour la section de configuration Azure dans votre fichier web.config.
Fichier : 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> |
Étape 4: Spécifiez les paramètres de votre section de configuration dans le fichier web.config (qui a été enregistré ci-dessus). Ces paramètres contrôlent NCache pour Azur ASP.NET View State Fonctionnalités de mise en cache.
Fichier : 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> |
Conclusion
NCache pour Azure fournit une option sans changement de code pour que vos applications Microsoft Azure stockent ASP.NET View State côté serveur dans un cache distribué. NCache pour Azur ASP.NET View State Le fournisseur optimise les performances en réduisant la charge utile des requêtes et la consommation de bande passante tout en résolvant les problèmes de sécurité liés à l'état d'affichage côté client.
Télécharger NCache Open Source et exécutez-le sur Microsoft Azure.
tu as raison sur NCache envoyer la chaîne d'origine à ASP.NET.
En ce qui concerne l'état d'affichage non mis en cache, il doit y avoir un problème avec votre configuration spécifique à votre environnement. Nous vous enverrons sous peu un e-mail à votre adresse e-mail enregistrée pour coordonner et vous aider davantage.
Hi
J'ai configuré toutes les étapes que vous avez décrites dans l'article, mais la chaîne d'état d'affichage n'a pas changé et n'a pas été réduite, l'idée principale est ncache remplacer la chaîne par sa propre chaîne puis, ncache dans le temps d'exécution passera la chaîne d'origine à asp.net, je me trompe ?
Veuillez me faire savoir, comment puis-je obtenir plus d'informations ou s'il sera possible d'obtenir une assistance à distance ?
Je suis content que tu y aies pensé ainsi.
Par défaut, NCache conserve tous les ViewStates indéfiniment dans le cache, quelle que soit la date à laquelle la publication est publiée. Par conséquent, toutes les demandes d'état d'affichage seront traitées par le cache.
D'autre part, vous pouvez également associer des expirations de base de temps (absolues ou glissantes) à ViewState et définir une valeur suffisamment élevée pour éviter les échecs de cache même après un long temps de retour des pots.
Vous pouvez également grouper ViewState avec NCache Séances. De cette façon, lorsqu'une session utilisateur est supprimée du cache, tous les ViewStates associés sont automatiquement supprimés. Cela permet d'éviter une charge de mémoire supplémentaire sur le cache, vous offrant les meilleures performances.
NCache semble assez utile.
En cas d'état de vue dans la page, la page peut être publiée même après une très longue période sans aucun impact.
Comment la NCache gérer ce scénario ?