Freigeben über


Gewusst wie: Speichern von Werten im Anwendungszustand

Aktualisiert: November 2007

Der Anwendungszustand ist ein Datenrepository, das allen Klassen innerhalb einer ASP.NET-Anwendung zur Verfügung steht. Der Anwendungszustand wird auf dem Server im Arbeitsspeicher gespeichert und erlaubt einen schnelleren Zugriff als das Speichern und Abrufen von Informationen über eine Datenbank. Im Gegensatz zum Sitzungszustand, der für jede einzelne Benutzersitzung spezifisch ist, gilt der Anwendungszustand für alle Benutzer und Sitzungen. Daher eignet sich der Anwendungszustand insbesondere zum Speichern kleiner Mengen von Daten, die häufig verwendet werden und für alle Benutzer gleich sind.

Der Anwendungszustand wird in der HttpApplicationState-Klasse gespeichert, von der eine neue Instanz erstellt wird, wenn ein Benutzer zum ersten Mal auf eine beliebige URL-Ressource innerhalb einer Anwendung zugreift. Die HttpApplicationState-Klasse wird durch die Application-Eigenschaft verfügbar gemacht.

Der Anwendungszustand speichert Daten als Object-Datentypen. Deshalb müssen Sie die Daten beim Abrufen in den entsprechenden Typ zurückkonvertieren.

Der Anwendungszustand wird auf dem Server im Arbeitsspeicher gespeichert. Große Datenmengen im Anwendungszustand können den Arbeitsspeicher des Servers schnell füllen. Wenn die Anwendung neu gestartet wird, gehen die Anwendungszustandsdaten verloren. Der Anwendungszustand kann nicht von mehreren Servern innerhalb einer Webfarm oder von mehreren Workerprozessen in einem Webgarten gemeinsam verwendet werden. Darüber hinaus arbeitet der Anwendungszustand im Freethreadmodus. Daher müssen alle Daten, die im Anwendungszustand gespeichert werden, über integrierte Synchronisierungsunterstützung verfügen. Weitere Informationen über diese Hinweise finden Sie unter Übersicht über den ASP.NET-Anwendungszustand und Empfehlungen zur ASP.NET-Zustandsverwaltung.

So schreiben Sie einen Wert in den Anwendungszustand

  • Legen Sie in der Anwendung den Wert der Variablen in der HttpApplicationState-Klasse fest.

    Das folgende Codebeispiel veranschaulicht, wie die Anwendungsvariable Message auf eine Zeichenfolge festgelegt werden kann.

    Application("Message") = "Welcome to the Contoso site."
    
    Application["Message"] = "Welcome to the Contoso site.";
    

So schreiben Sie beim Start der Anwendung einen Wert in den Anwendungszustand

  • Legen Sie im Application_Start-Handler der Anwendungsdatei Global.asax den Wert der Anwendungszustandsvariablen fest. Ebenso wie in einer normalen ASPX-Seite wird die HttpApplicationState-Klasse durch das Application-Objekt verfügbar gemacht.

    Das folgende Codebeispiel veranschaulicht, wie die Anwendungsvariable Message auf eine Zeichenfolge festgelegt und die Variable PageRequestCount mit 0 initialisiert werden kann.

    Application("Message") = "Welcome to the Contoso site."
    Application("PageRequestCount") = 0
    
    Application["Message"] = "Welcome to the Contoso site.";
    Application["PageRequestCount"] = 0;
    

Schreiben eines Werts in den Anwendungszustand mit Sperre

Mehrere Threads können gleichzeitig auf Anwendungszustandsvariablen zugreifen. Um ungültige Daten zu vermeiden, müssen Sie daher vor dem Festlegen von Werten den Anwendungszustand sperren, sodass nur ein Thread in den Anwendungszustand schreiben kann.

Hinweis:

Sie sollten Änderungen an Anwendungszustandsdaten immer innerhalb einer lock-Anweisung vornehmen, sofern Sie keine andere Art von Sperre verwenden. Weitere Informationen finden Sie unter Datensynchronisierung für Multithreading.

So schreiben Sie einen Wert in den Anwendungszustand mit Sperre

  • Rufen Sie in dem Codeteil, in dem Sie den Wert der Anwendungsvariablen festlegen, die HttpApplicationState.Lock-Methode auf. Legen Sie den Anwendungszustandswert fest, und rufen Sie dann die HttpApplicationState.UnLock-Methode auf, um den Anwendungszustand zu entsperren und für weitere Schreibanforderungen freizugeben.

    Das folgende Codebeispiel veranschaulicht das Sperren und Entsperren des Anwendungszustands. Der Code erhöht die PageRequestCount-Variable um 1 und hebt anschließend die Sperre des Anwendungszustands auf.

    Application.Lock()
    Application("PageRequestCount") = _
        CInt(Application("PageRequestCount")) + 1
    Application.UnLock()
    
    Application.Lock();
    Application["PageRequestCount"] = 
        ((int)Application["PageRequestCount"])+1;
    Application.UnLock();
    

Siehe auch

Aufgaben

Gewusst wie: Lesen von Werten im Anwendungszustand

Konzepte

Übersicht über die ASP.NET-Zustandsverwaltung

Empfehlungen zur ASP.NET-Zustandsverwaltung

Weitere Ressourcen

ASP.NET-Anwendungszustand