Freigeben über


Einführung in die Web Forms-Statusverwaltung

Webseiten werden bei jedem Senden an den Server neu erstellt. Bei der herkömmlichen Webprogrammierung würde dies normalerweise bedeuten, dass alle zur Seite gehörenden Informationen und die Steuerelemente auf der Seite bei jeder Schleife verloren gingen. Wenn z. B. ein Benutzer Informationen in ein Textfeld eingibt, würden diese Informationen während der Schleife vom Browser oder Clientgerät zum Server verloren gehen. Weitere Informationen finden Sie unter Verarbeiten von Web Forms-Seiten.

Um diese inhärente Einschränkung der herkömmlichen Webprogrammierung zu überwinden, verfügt das ASP.NET-Seitengerüst über verschiedene Optionen, mit denen Änderungen beibehalten werden können, d. h. Optionen zur Statusverwaltung. Das Seitengerüst besitzt eine als Anzeigestatus bezeichnete Funktion, die die Eigenschaftenwerte der Seite und alle darauf enthaltenen Steuerelemente zwischen den Schleifen automatisch beibehält. Möglicherweise gibt es jedoch auch anwendungsspezifische Werte, die beibehalten werden sollen. In diesem Fall verwenden Sie eine der Statusverwaltungsoptionen.

Bei einigen Optionen müssen die Informationen auf dem Client erhalten werden, z. B. direkt in der Seite oder in einem Cookie, und bei anderen Optionen müssen die Informationen auf dem Server zwischen Schleifen gespeichert werden. Jede Option hat Vor- und Nachteile.

Clientbasierte Statusverwaltungsoptionen

In den folgenden Abschnitten werden Optionen für die Statusverwaltung beschrieben, für die das Speichern der Informationen entweder in der Seite oder auf dem Client erforderlich ist. Bei diesen Optionen bleiben die Informationen auf dem Server zwischen den Schleifen nicht erhalten.

Anzeigestatus

Die Control.ViewState-Eigenschaft enthält ein Dictionary-Objekt, um Werte zwischen mehreren Anforderungen derselben Seite beizubehalten. Dies ist die Methode, die die Seite zum Beibehalten von Seitenwerten und Werten für Steuerelementeigenschaften zwischen den Schleifen verwendet.

Bei der Verarbeitung der Seite wird der aktuelle Status der Seite und der Steuerelemente in eine Zeichenfolge gehasht und in der Seite als ausgeblendetes Feld gespeichert. Wenn die Seite an den Server zurückgesendet wird, werden die Zeichenfolge für den Anzeigestatus bei der Seiteninitialisierung analysiert und Eigenschafteninformationen in der Seite wiederhergestellt.

Sie können auch Werte im Anzeigestatus speichern. Ausführliche Informationen finden Sie unter Speichern von Web Forms-Seitenwerten mit Hilfe von ViewState. Empfehlungen über die Verwendung des Anzeigestatus finden Sie unter Empfehlungen zur Statusverwaltung.

Ausgeblendete Formularfelder

ASP.NET ermöglicht die Verwendung von ausgeblendeten HTML-Standardfeldern in einem Formular. Ein ausgeblendetes Feld wird im Browser nicht sichtbar dargestellt. Sie können jedoch seine Eigenschaften wie bei einem Standardsteuerelement darstellen. Wenn eine Seite an den Server übertragen wird, wird der Inhalt eines ausgeblendeten Feldes in der HTTP-Formularauflistung zusammen mit den Werten von anderen Steuerelementen gesendet. Ein ausgeblendetes Feld fungiert als Repository für beliebige seitenspezifische Informationen, die Sie direkt in der Seite speichern möchten.

Sicherheitshinweis   Für böswillige Benutzer ist es einfach, die Inhalte eines ausgeblendeten Feldes anzuzeigen und zu verändern. Speichern Sie daher in ausgeblendeten Feldern keine vertraulichen Daten oder solche Daten, die für die Funktionsfähigkeit der Anwendung unverzichtbar sind.

Bei einem ausgeblendeten Feld wird eine einzelne Variable in der Werteigenschaft gespeichert. Es muss ausdrücklich zu der Seite hinzugefügt werden. Anschließend fügen Sie den Wert in das ausgeblendete Feld ein. ASP.NET enthält das HtmlInputHidden-Steuerelement, das die Funktionalität für ausgeblendete Felder zur Verfügung stellt. Weitere Informationen finden Sie unter ASP.NET-Serversteuerelemente nach Funktion.

Wenn die Werte in ausgeblendeten Feldern während der Seitenverarbeitung zur Verfügung stehen sollen, müssen Sie die Seite mit Hilfe der HTTP-Sendemethode senden. Sie können also ausgeblendete Felder nicht nutzen, wenn die Seite als Reaktion auf einen Link oder eine HTTP-GET-Methode verarbeitet wird. Empfehlungen zur Verwendung finden Sie unter Empfehlungen zur Statusverwaltung.

Cookies

Bei einem Cookie handelt es sich um eine kleine Menge von Daten, die entweder in einer Textdatei auf dem Dateisystem des Clients oder im Speicher einer Clientbrowsersitzung gespeichert werden. Es enthält seitenspezifische Informationen, die der Server zusammen mit der Seitenausgabe an den Client sendet. Cookies können temporär (mit bestimmter Ablaufzeit und bestimmtem Ablaufdatum) oder permanent sein.

Sie können Cookies zum Speichern von Informationen über einen bestimmten Client, eine bestimmte Sitzung oder eine bestimmte Anwendung verwenden. Die Cookies werden auf dem Clientgerät gespeichert. Wenn der Browser eine Seite anfordert, sendet er die Informationen zusammen mit den Anforderungsinformationen an das Cookie. Der Server kann das Cookie lesen und seinen Wert extrahieren. Im Allgemeinen wird ein (möglicherweise verschlüsseltes) Token gespeichert, das angibt, dass der Benutzer bereits in der Anwendung authentifiziert wurde.

Sicherheitshinweis   Der Browser kann die Daten nur an den Server zurücksenden, der ursprünglich den Cookie erstellt hat. Böswillige Benutzer können Cookies jedoch "stehlen" und deren Inhalt lesen. Speichern Sie in einem Cookie keine vertraulichen Informationen, wie Benutzername und Kennwort. Speichern Sie stattdessen ein Token, mit dessen Hilfe Sie auf dem Server nach den vertraulichen Informationen suchen können.

Weitere Informationen über die Verwendung von Cookies finden Sie unter HttpResponse.Cookies-Eigenschaft und Empfehlungen zur Statusverwaltung.

Abfragezeichenfolgen

Bei einer Abfragezeichenfolge handelt es sich um Informationen, die an das Ende eines Seiten-URL angehängt werden. Ein typisches Beispiel könnte folgendermaßen aussehen:

https://www.contoso.com/listwidgets.aspx?category=basic&price=100

Im URL-Pfad oben beginnt die Abfragezeichenfolge mit dem Fragezeichen (?) und enthält die zwei Attribut/Wert-Paare "category" und "price".

Abfragezeichenfolgen bieten eine einfache, jedoch beschränkte Möglichkeit für die Verwaltung einiger Statusinformationen. Beispielsweise ist dies eine einfache Möglichkeit, Informationen, z. B. Produktnummern, von einer Seite zu einer anderen zu übergeben, wo sie verarbeitet werden. Die meisten Browser und Clientgeräte beschränken jedoch die Länge des URL auf 255 Zeichen.

Sicherheitshinweis   In einer Abfragezeichenfolge übergebene Informationen können von böswilligen Benutzern manipuliert werden. Verwenden Sie keine Abfragezeichenfolgen zur Übermittlung von wichtigen oder vertraulichen Daten. Weitere Informationen finden Sie unter Skriptangriffe.

Wenn die Werte für Abfragezeichenfolgen während der Seitenverarbeitung zur Verfügung stehen sollen, müssen Sie die Seite mit Hilfe der HTTP-Aufrufmethode senden. Sie können demnach eine Abfragezeichenfolge nicht nutzen, wenn eine Seite als Reaktion auf eine HTTP-Sendemethode verarbeitet wird. Empfehlungen zur Verwendung finden Sie unter Empfehlungen zur Statusverwaltung.

Serverbasierte Statusverwaltungsoptionen

ASP.NET bietet Ihnen mehrere Möglichkeiten zum Verwalten von Statusinformationen auf dem Server. Diese werden in den folgenden Abschnitten beschrieben.

Anwendungsstatus

In ASP.NET können Sie mit Hilfe des Anwendungsstatus (eine Instanz der HttpApplicationState-Klasse) Werte für jede aktive Webanwendung speichern. Beim Anwendungsstatus handelt es sich um einen globalen Speichermechanismus, auf den von allen Seiten in der Webanwendung zugegriffen werden kann. Daher eignet sich das Objekt zum Speichern von Informationen, die zwischen Serverschleifen und Seiten beibehalten werden müssen. Weitere Informationen finden Sie unter Anwendungszustand.

Der Anwendungsstatus ist eine Schlüssel/Wert-Dictionary-Struktur, die während jeder Anforderung eines bestimmten URL erstellt wird. Sie können dieser Struktur die anwendungsspezifischen Informationen hinzufügen, um sie zwischen Seitenanforderungen zu speichern.

Nachdem Sie dem Anwendungsstatus die anwendungsspezifischen Informationen hinzugefügt haben, wird er vom Server verwaltet. Empfehlungen zur Verwendung finden Sie unter Empfehlungen zur Statusverwaltung.

Sitzungsstatus

In ASP.NET können Sie mit Hilfe des Sitzungsstatus, der eine Instanz der HttpSessionState-Klasse ist, Werte für jede aktive Websitzung speichern. (Eine Übersicht finden Sie unter Sitzungszustand.)

Der Sitzungsstatus ist ähnlich dem Anwendungsstatus, mit der Ausnahme, dass sich der Gültigkeitsbereich auf die aktuelle Browsersitzung erstreckt. Wenn die Anwendung von verschiedenen Benutzern verwendet wird, besitzt jeder Benutzer einen anderen Sitzungsstatus. Wenn ein Benutzer die Anwendung verlässt und später wieder damit arbeitet, hat dieser Benutzer auch einen anderen Sitzungsstatus.

Der Sitzungsstatus ist als Schlüssel/Wert-Dictionary-Struktur zum Speichern von sitzungsspezifischen Informationen ausgebildet, die zwischen Serverschleifen und Seitenanforderungen beibehalten werden müssen. Weitere Informationen finden Sie unter Sitzungszustand.

Mit dem Sitzungsstatus können Sie Folgendes ausführen:

  • Browser- oder Clientgerätanforderungen eindeutig identifizieren und sie einer individuellen Sitzungsinstanz auf dem Server zuordnen.
  • Sitzungsspezifische Daten auf dem Server speichern, um sie über mehrere Browser- oder Clientgerätanforderungen innerhalb derselben Sitzung zu verwenden.
  • Entsprechende Sitzungsverwaltungsereignisse auslösen. Außerdem können Sie Anwendungscode schreiben, der diese Ereignisse nutzt.

Nachdem Sie dem Sitzungsstatus die anwendungsspezifischen Informationen hinzugefügt haben, wird dieses Objekt vom Server verwaltet. Abhängig von den angegebenen Optionen können Sitzungsinformationen in Cookies, einem prozessexternen Server oder einem SQL Server gespeichert werden. Empfehlungen zur Verwendung finden Sie unter Empfehlungen zur Statusverwaltung.

Datenbankunterstützung

Das Beibehalten von Statusinformationen mit Hilfe von Datenbanktechnologie ist beim Speichern großer Mengen von benutzerspezifischen Informationen allgemein üblich. Der Datenbankspeicher ist besonders nützlich zur Beibehaltung eines Langzeitstatus oder eines Status, der selbst bei einem Neustart des Servers beibehalten werden muss.

Die Datenbankmethode wird oft in Verbindung mit Cookies verwendet. Es könnte z. B. sein, dass sich ein Benutzer beim ersten Zugriff auf die Anwendung anmelden muss. Sie können den Benutzer in der Datenbank suchen und dann ein Cookie an den Benutzer senden. Das Cookie könnte lediglich die ID des Benutzers in der Datenbank enthalten (z. B. eine Kundennummer). Sie können das Cookie anschließend in späteren Anforderungen verwenden, um die Benutzerinformationen nach Bedarf in der Datenbank zu suchen.

Sicherheitshinweis   Da Cookies verfälscht werden können, sollten Sie darin keine Informationen speichern, die für die Anwendung erforderlich sind. Speichern Sie beispielsweise niemals vertrauliche Informationen in einem Cookie. Wenn Sie Cookies zum Speichern von Token verwenden (beispielsweise einer Benutzer-ID), können Sie den Wert des Cookies verschlüsseln oder Logik hinzufügen, um sicher zu stellen, dass der Wert des Cookies nicht verfälscht wurde.

Mit der Datenbankunterstützung können Sie Folgendes ausführen:

  • Browser- oder Clientanforderungen eindeutig identifizieren und einer eindeutigen ID zuordnen.
  • Den Status beibehalten, indem Sie die gespeicherten Informationen der eindeutigen ID zuordnen. Mit der eindeutigen ID können Sie die Datenbank nach Informationen abfragen, die mit der ID verknüpft sind. Anschließend können Sie die Informationen ändern und zurück in die Datenbank speichern, damit sie über mehrere Anforderungen für dieselbe oder andere Seiten in der Site verwendet werden können.
  • Entsprechende Ereignisse auslösen. Eine Bedingung in der Datenbank kann die Siteaktion festlegen. Wenn z. B. der Benutzer einer Commerce-Site versucht, einen nicht vorrätigen Artikel zu kaufen, kann eine Datenbankabfrage signalisieren, dass die Website den Benutzer auffordern soll, eine andere Auswahl zu treffen.

Weitere Informationen über die Verwendung einer Datenbank zum Beibehalten des Status finden Sie unter Empfehlungen zur Statusverwaltung.

Siehe auch

Web Forms-Statusverwaltung | Speichern von Web Forms-Seitenwerten mit Hilfe von ViewState | Empfehlungen zur Statusverwaltung | Page-Member | ASP.NET-Zustandsverwaltung | Anwendungszustand | Sitzungszustand | HttpCookie-Klasse