SessionStateStoreProviderBase Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Definiert die erforderlichen Member eines Sitzungszustandsanbieters für einen Datenspeicher.
public ref class SessionStateStoreProviderBase abstract : System::Configuration::Provider::ProviderBase
public abstract class SessionStateStoreProviderBase : System.Configuration.Provider.ProviderBase
type SessionStateStoreProviderBase = class
inherit ProviderBase
Public MustInherit Class SessionStateStoreProviderBase
Inherits ProviderBase
- Vererbung
Beispiele
Ein Beispiel für eine Sitzungszustandsspeicheranbieterimplementierung finden Sie unter Implementieren eines Session-State Store-Anbieters.
Das folgende Codebeispiel zeigt die Web.config-Datei für eine ASP.NET Anwendung, die für die Verwendung eines benutzerdefinierten Sitzungszustandsspeicheranbieters konfiguriert ist.
<configuration>
<connectionStrings>
<add name="OdbcSessionServices" connectionString="DSN=SessionState;" />
</connectionStrings>
<system.web>
<sessionState
mode="Custom"
customProvider="OdbcSessionProvider">
<providers>
<add name="OdbcSessionProvider"
type="Samples.AspNet.Session.OdbcSessionStateStore"
connectionStringName="OdbcSessionServices" />
</providers>
</sessionState>
</system.web>
</configuration>
Hinweise
ASP.NET Sitzungsstatus liest Sitzungsdaten aus und schreibt sie mithilfe eines Sitzungszustandsspeicheranbieters aus und in einen Datenspeicher. Ein Sitzungszustandsspeicheranbieter ist eine Klasse, die die SessionStateStoreProviderBase abstrakte Klasse erbt und ihre Member mit für den Datenspeicher spezifischen Implementierungen überschreibt. Der Sitzungszustandsspeicheranbieter wird von der SessionStateModule -Klasse während der Verarbeitung einer ASP.NET-Seite aufgerufen, um mit dem Datenspeicher für das Speichern und Abrufen von Sitzungsvariablen und zugehörigen Sitzungsinformationen wie dem Timeoutwert zu kommunizieren.
Sitzungsdaten in jeder ASP.NET Anwendung werden separat für jede SessionID Eigenschaft gespeichert. ASP.NET Anwendungen teilen keine Sitzungsdaten.
Sie können eine benutzerdefinierte SessionStateStoreProviderBase Implementierung für eine ASP.NET Anwendung angeben, indem Sie das mode
Attribut des sessionState
Konfigurationselements auf Custom und das customProvider
Attribut auf den Namen des benutzerdefinierten Anbieters festlegen, wie im Beispiel für dieses Thema gezeigt.
Sperren von Sitzungsspeicherdaten
Da ASP.NET Anwendungen multithreaded sind, um die Reaktion auf gleichzeitige Anforderungen zu unterstützen, ist es möglich, dass gleichzeitige Anforderungen versuchen, auf dieselben Sitzungsinformationen zuzugreifen. Stellen Sie sich ein Szenario vor, in dem mehrere Frames in einem Frameset auf dieselbe Anwendung zugreifen. Die separaten Anforderungen für jeden Frame im Frameset können auf dem Webserver gleichzeitig in verschiedenen Threads ausgeführt werden. Wenn die ASP.NET Seiten für jede Framequelle auf Sitzungsstatusvariablen zugreifen, können mehrere Threads gleichzeitig auf den Sitzungsspeicher zugreifen.
Um Datenkollisionen im Sitzungsspeicher und unerwartetes Sitzungszustandsverhalten zu vermeiden, enthalten die SessionStateModule Klassen und SessionStateStoreProviderBase Sperrfunktionen, die das Sitzungsspeicherelement für eine bestimmte Sitzung für die Dauer der Ausführung einer ASP.NET Seite exklusiv sperren. Beachten Sie, dass selbst wenn das EnableSessionState Attribut als ReadOnly
gekennzeichnet ist, andere ASP.NET Seiten in derselben Anwendung möglicherweise in den Sitzungsspeicher schreiben können, sodass eine Anforderung für schreibgeschützte Sitzungsdaten aus dem Speicher möglicherweise immer noch auf die Freigabe gesperrter Daten wartet.
Für Sitzungsspeicherdaten wird am Anfang der Anforderung im Aufruf GetItemExclusive der -Methode eine Sperre festgelegt. Wenn die Anforderung abgeschlossen ist, wird die Sperre während des Aufrufs der SetAndReleaseItemExclusive -Methode freigegeben.
Wenn das SessionStateModule Objekt während des Aufrufs der GetItemExclusive -Methode oder GetItem auf gesperrte Sitzungsdaten stößt, fordert es die Sitzungsdaten in Abständen von einer halben Sekunde erneut an, bis entweder die Sperre aufgehoben wird oder die Zeitspanne, in der die Sitzungsdaten gesperrt wurden, den Wert der ExecutionTimeout Eigenschaft überschreitet. Wenn das Ausführungszeitlimit überschritten wird, ruft das Objekt die SessionStateModuleReleaseItemExclusive -Methode auf, um die Sitzungsspeicherdaten frei zu geben und die Sitzungsspeicherdaten zu diesem Zeitpunkt anzufordern.
Da gesperrte Sitzungsspeicherdaten möglicherweise durch einen Aufruf der -Methode in einem separaten Thread vor dem Aufruf SetAndReleaseItemExclusive der ReleaseItemExclusive -Methode für die aktuelle Antwort freigegeben wurden, kann versucht werden, Sitzungsstatusspeicherdaten festzulegen und freizugeben, die bereits von einer anderen Sitzung freigegeben und geändert wurden. Um diese Situation zu vermeiden, geben die GetItem Methoden und GetItemExclusive einen Sperrbezeichner zurück. Dieser Sperrbezeichner muss bei jeder Anforderung enthalten sein, um gesperrte Sitzungsspeicherdaten zu ändern. Sitzungsspeicherdaten werden nur geändert, wenn der Sperrbezeichner im Datenspeicher mit dem vom bereitgestellten SessionStateModuleSperrbezeichner übereinstimmt.
Löschen abgelaufener Sitzungsspeicherdaten
Wenn die Abandon -Methode für eine bestimmte Sitzung aufgerufen wird, werden die Daten für diese Sitzung mithilfe der RemoveItem -Methode aus dem Datenspeicher gelöscht. Andernfalls verbleiben die Daten im Sitzungsdatenspeicher für zukünftige Anforderungen für die Sitzung. Es liegt an der SessionStateStoreProviderBase Implementierung, abgelaufene Sitzungsdaten zu löschen.
Konstruktoren
SessionStateStoreProviderBase() |
Initialisiert eine neue Instanz der SessionStateStoreProviderBase-Klasse. |
Eigenschaften
Description |
Ruft eine kurze, benutzerfreundliche Beschreibung ab, die für die Anzeige in Verwaltungstools oder anderen Benutzeroberflächen geeignet ist. (Geerbt von ProviderBase) |
Name |
Ruft den Anzeigennamen ab, der verwendet wird, um während der Konfiguration auf den Anbieter zu verweisen. (Geerbt von ProviderBase) |
Methoden
CreateNewStoreData(HttpContext, Int32) |
Erstellt ein neues SessionStateStoreData-Objekt, das für die aktuelle Anforderung verwendet werden soll. |
CreateUninitializedItem(HttpContext, String, Int32) |
Fügt dem Datenspeicher ein neues Sitzungszustandselement hinzu. |
Dispose() |
Gibt alle von der SessionStateStoreProviderBase-Implementierung verwendeten Ressourcen frei. |
EndRequest(HttpContext) |
Wird am Ende einer Anforderung vom SessionStateModule-Objekt aufgerufen. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions) |
Gibt schreibgeschützte Sitzungszustandsdaten vom Sitzungsdatenspeicher zurück. |
GetItemExclusive(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions) |
Gibt schreibgeschützte Sitzungszustandsdaten vom Sitzungsdatenspeicher zurück. |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
Initialize(String, NameValueCollection) |
Initialisiert den Konfigurations-Generator. (Geerbt von ProviderBase) |
InitializeRequest(HttpContext) |
Wird vom SessionStateModule-Objekt für die Initialisierung pro Anforderung aufgerufen. |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ReleaseItemExclusive(HttpContext, String, Object) |
Gibt eine Sperre auf einem Element im Sitzungsdatenspeicher frei. |
RemoveItem(HttpContext, String, Object, SessionStateStoreData) |
Löscht Elementdaten aus dem Sitzungsdatenspeicher. |
ResetItemTimeout(HttpContext, String) |
Aktualisiert das Ablaufdatum und die Ablaufzeit eines Elements im Sitzungsdatenspeicher. |
SetAndReleaseItemExclusive(HttpContext, String, SessionStateStoreData, Object, Boolean) |
Aktualisiert die Sitzungselementinformationen im Speicher für die Sitzungszustandsdaten mit Werten aus der aktuellen Anforderung und löscht die Sperre der Daten. |
SetItemExpireCallback(SessionStateItemExpireCallback) |
Legt einen Verweis auf den SessionStateItemExpireCallback-Delegaten für das in der Datei Global.asax definierte |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |