ASP.NET View State ist ein clientseitiger Zustandsverwaltungsmechanismus, der zum Speichern von Seiten- und Steuerwerten verwendet wird. ASP.NET View State ist ein verstecktes Feld auf der Seite als codierter Base64-String. Es wird als Teil jeder Antwort an den Client gesendet und vom Client als Teil eines Postbacks an den Server zurückgesendet.
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...."/> |
Probleme mit ASP.NET View State bei MicrosoftAzure
ASP.NET View State ist ein sehr wichtiges Feature für Anwendungen, die als Web-/Worker-Rollen bereitgestellt werden Microsoft Azure-Cache. Der Ansichtsstatus bringt jedoch einige Probleme mit sich, die Sie verstehen und lösen müssen, um den vollen Nutzen daraus ziehen zu können.
Zuallererst ASP.NET View State wird sehr groß, besonders wenn Ihre Microsoft Azure ASP.NET-Anwendung viele schwere Steuerelemente auf ihren Seiten hat. Dies führt zu einer hohen Nutzlast des Ansichtszustands, die bei jeder Anforderung zwischen dem Browser und Ihrer Anwendung hin und her wandert. Eine hohe Nutzlast des Ansichtszustands verlangsamt die Leistung und führt auch zu einem zusätzlichen Bandbreitenverbrauch, insbesondere im Durchschnitt ASP.NET View State in Hunderten von Kilobyte endet und wenn Millionen solcher Anfragen in Ihrer Microsoft Azure-Anwendung verarbeitet werden.
ASP.NET View State ist auch ein Sicherheitsrisiko, wenn vertrauliche Daten als Teil des Anzeigestatus an den Client gesendet werden. Diese Daten sind anfällig für Angriffe und können von einem Angreifer manipuliert werden, was eine ernsthafte Sicherheitsbedrohung darstellt.
Lösung für ASP.NET View State Probleme
Sie können lösen ASP.NET View State Probleme in Microsoft Azure-Anwendungen durch Speichern der tatsächlichen ASP.NET View State auf der Serverseite in einem verteilten Cache und senden Sie es niemals zusammen mit der Nutzlast der Anfrage an den Browser zurück.
NCache for Azure ist ein extrem schneller und skalierbarer verteilter Cache für Microsoft Azure. Es ermöglicht Ihnen, aktuelle zu speichern ASP.NET View State im verteilten Cache auf der Serverseite und senden stattdessen ein kleines Token als Ansichtsstatus an den Client in einer Anforderungsnutzlast. Dadurch wird die Größe der Anforderungsnutzlast drastisch reduziert. View State Token wird dann auf der Serverseite verwendet, um das Recht zu finden ASP.NET View State in NCache für Azure Distributed Cache auf Postbacks. Eine kleinere Nutzlast löst Probleme im Zusammenhang mit Leistung und Bandbreitenauslastung, da Sie nicht mehr bei jeder Anforderung in Ihrer Microsoft Azure-Anwendung mit einem riesigen Ansichtsstatus zu tun haben. Außerdem wird serverseitig in View State gespeichert NCache für den verteilten Azure-Cache wird Clients nie ausgesetzt, sodass die oben genannten Sicherheitsbedenken behoben werden.
Hier ist ein Beispiel für ein Token, das anstelle von verwendet wird ASP.NET View State mit NCache für Azure ASP.NET View State Anbieter:
1 2 |
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="cf8c8d3927ad4c1a84dsadfgsdsfdsda7f891bb89185" /> |
Die richtigen NCache für Azure ASP.NET View State Caching
Schritt 1: Erstellen Sie eine app.browser-Datei im App_browsers-Verzeichnis. Fügen Sie Seitenadapter wie folgt in die Datei app.browser ein:
Datei: 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> |
Schritt 2: Fügen Sie den folgenden Assemblyverweis im Abschnitt „compilation“ der Datei „web.config“ hinzu.
Datei: 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> |
Schritt 3: Registrieren NCache für den Azure-Konfigurationsabschnitt in Ihrer web.config-Datei.
Datei: 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> |
Schritt 4: Geben Sie Einstellungen für Ihren Konfigurationsabschnitt in der Datei web.config an (die oben registriert wurde). Diese Einstellungen steuern NCache für Azure ASP.NET View State Caching-Funktionen.
Datei: 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> |
Zusammenfassung
NCache für Azure bietet eine Option ohne Codeänderung zum Speichern Ihrer Microsoft Azure-Anwendungen ASP.NET View State auf der Serverseite in einem verteilten Cache. NCache für Azure ASP.NET View State Der Anbieter optimiert die Leistung, indem er die Nutzlast von Anfragen und den Bandbreitenverbrauch reduziert und gleichzeitig Sicherheitsprobleme im Zusammenhang mit dem Anzeigestatus auf Clientseite angeht.
Herunterladen NCache Open Source und führen Sie es auf Microsoft Azure aus.
Du hast recht NCache Senden der ursprünglichen Zeichenfolge an ASP.NET.
Soweit der Ansichtsstatus nicht zwischengespeichert wird, muss etwas mit Ihrer Konfiguration spezifisch für Ihre Umgebung nicht stimmen. Wir werden Ihnen in Kürze eine E-Mail an Ihre registrierte E-Mail-Adresse senden, um Sie zu koordinieren und Ihnen weiterzuhelfen.
Hi
Ich habe alle Schritte konfiguriert, die Sie in dem Artikel beschrieben haben, aber die Zeichenfolge für den Ansichtszustand hat sich nicht geändert und wurde nicht kleiner, die Hauptidee ist ncache ersetzen Sie die Saite durch seine eigene Saite und dann, ncache in der Ausführungszeit wird die ursprüngliche Zeichenfolge an asp.net übergeben, irre ich mich?
Bitte teilen Sie mir mit, wie kann ich weitere Informationen erhalten oder ob es möglich ist, Fernunterstützung zu erhalten?
Ich bin froh, dass du so darüber nachgedacht hast.
Standardmäßig, NCache behält alle ViewStates auf unbestimmte Zeit im Cache, unabhängig davon, wie spät die Rücksendung ausgegeben wird. Daher werden alle Ansichtsstatusanforderungen vom Cache behandelt.
Andererseits können Sie ViewState auch Zeitbasisabläufe (absolut oder gleitend) zuordnen und den Wert hoch genug setzen, um Cache-Misss auch nach einer langen Pott-Rücklaufzeit zu vermeiden.
Sie können ViewState auch mit gruppieren NCache Sitzungen. Auf diese Weise werden beim Entfernen einer Benutzersitzung aus dem Cache alle zugehörigen ViewStates automatisch entfernt. Dies hilft, eine zusätzliche Speicherbelastung des Cache zu vermeiden und bietet Ihnen die beste Leistung.
NCache hört sich ganz brauchbar an.
Bei Viewstate in Page kann die Seite auch nach sehr langer Zeit ohne Auswirkung zurückgepostet werden.
Wie funktioniert NCache mit diesem Szenario umgehen?