Eigenschaften des ASP.NET-Sitzungszustandsanbieters
Speichern von ASP.NET-Sitzungen in NCache erfordert keine Programmierung. NCache Der ASP.NET Session State Provider ist ein benutzerdefinierter Anbieter SessionStateStoreProviderBase
Implementierung für eine ASP.NET-Anwendung. Um ASP.NET-Sitzungen in Ihrer Anwendung zu konfigurieren und abzurufen, sind die folgenden Änderungen erforderlich.
Note
Diese Funktion ist auch in verfügbar NCache Professional.
Voraussetzungen für den ASP.NET-Sitzungsstatus
- Installieren Sie die folgenden NuGet-Pakete basierend auf Ihrer Anwendung in Ihrer Anwendung NCache Version:
- Unternehmen: AspNet.SessionState.NCache
- Professional: AspNet.SessionState.NCache.Fachmann
- Open Source: AspNet.SessionState.NCache.Open Source
- Der Cache muss ausgeführt werden.
Ändern Sie das Tag für den Sitzungsstatus von asp.net
Bearbeiten Sie Ihre Bewerbung Web.config Datei und ändern Sie die <sessionState>
Abschnitt wie unten angegeben.
<configuration>
...
<sessionState cookieless="false"
regenerateExpiredSessionId="true"
mode="Custom"
customProvider="NCacheSessionProvider"
timeout="20">
<providers>
<add name="NCacheSessionProvider"
type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider"
cacheName="demoCache"
sessionAppId="demoApp"
useInProc="false"
enableLogs="false"
exceptionsEnabled="true"
writeExceptionsToEventLog="false"
AsyncSession="false"
useJsonSerialization="false"
enableLogs="false"
enableSessionLocking="true"
sessionLockingRetry="-1"
emptySessionWhenLocked="false" />
</providers>
</sessionState>
...
</configuration>
Ändern Sie das MachineKey-Tag für Webfarmen
Im Falle von Webfarmen fügen Sie das hinzu <machineKey>
Eintrag unter <system.web>
Abschnitt. Es ist erforderlich, ASP.NET-Sitzungs-IDs auf allen Knoten auf die gleiche Weise zu generieren.
Erfahren Sie, wie Sie einen Maschinenschlüssel für eine Webfarm generieren:
Generieren eines Computerschlüssels für eine Webfarm (IIS 7)
<machineKey validationKey ="A01D6E0D1A5D2A22E0854CA612FE5C5EC4AECF24"
decryptionKey ="ACD8EBF87C4C8937" validation ="SHA1"/>
Serialisieren von Sitzungsobjekten
Bevor Sie anfangen zu verwenden NCache Um Ihre ASP.NET-Sitzungsobjekte zu speichern und abzurufen, müssen Sie wissen, dass Sie diese Objekte nicht direkt im Cache speichern können. Um diese Sitzungsobjekte im Cache zu speichern, müssen Sie sie zunächst serialisieren. Es gibt verschiedene Methoden, mit denen Sie Ihre Sitzungsobjekte serialisieren können. Diese Methoden sind wie folgt:
Binäre Serialisierung
Sie können diese Serialisierungsmethode verwenden, wenn Sie Zugriff auf den Quellcode der Anwendung haben. In diesem Fall müssen Sie alle Objekte (die Sie im Cache speichern möchten) als serialisierbar markieren.
Note
Diese Methode ist jedoch ab .NET 6.0 veraltet, und wenn Sie die binäre Serialisierung oder die kompakte Serialisierung in ASP.NET-Anwendungen verwenden, wird eine Ausnahme ausgelöst, die die Benutzer entsprechend informiert.
NCache Kompakte Serialisierung
Wenn Sie die binäre Serialisierung nicht verwenden können oder möchten, können Sie verwenden NCache Kompakte Serialisierung um Ihre Sitzungsobjekte zu serialisieren. Es ist schneller und erfordert nur die Änderung Ihrer Konfigurationsdateien anstelle einer Änderung des Quellcodes.
Das einzige Problem bei dieser Methode besteht darin, dass die Konfigurationsänderung umfangreich sein kann, wenn die Anzahl der Klassen, die Sie serialisieren möchten, groß ist.
JSON-Serialisierung
Wenn eine der oben genannten Serialisierungstechniken für Sie nicht ausreicht, können Sie sich stattdessen für die JSON-Serialisierung entscheiden. Das Beste an dieser Methode ist, dass sie superschnell und einfach ist, da Sie nur eine einzige Änderung an Ihrem Konto vornehmen müssen web.config Datei und der Rest der Arbeit wird von erledigt NCache automatisch zur Laufzeit.
Sie müssen nur den Wert von festlegen usejsonserialization
als Wahr kennzeichnen. Standardmäßig ist der Wert dieses Flags False.
Sitzungsdaten abrufen
NCache ermöglicht die Anzeige aller in einem Cluster-Cache gespeicherten Sitzungsdaten über NCache Sitzungszustandsmodul. Alle Sitzungsdaten werden im angegebenen Cache als getaggtes Cache-Element mit Tag hinzugefügt: NC_ASP.net_session_data
.
Um zuvor gespeicherte Sitzungsdaten abzurufen, können Daten abgerufen werden GetByTag
API, die ein Wörterbuch zurückgibt, das mit Sitzungs-IDs und zugehörigen Sitzungsdaten gefüllt ist, die im Cache gespeichert sind.
var allSessionData = cache.SearchService.GetByTag(new Tag("NC_ASP.net_session_data"));
SessionState-Eigenschaften
Im Folgenden finden Sie eine Beschreibung der verschiedenen oben angegebenen Schlüssel-Wert-Paare:
Mitglied | Beschreibung |
---|---|
sessionAppId |
Es ist optional string Attribut, das eine Kennung angibt, um sicherzustellen, dass die Sitzungs-ID eindeutig bleibt, falls mehrere Anwendungen denselben Cache verwenden. Die Anwendungs-ID sollte für eine Anwendung in einer Webfarm dieselbe sein. Wenn keine App-ID angegeben ist, wird nichts mit der Sitzungs-ID verkettet. |
cacheName |
Dies ist erforderlich String Attribut, das den Namen des Caches angibt, der für die Caching-Sitzung verwendet werden soll. Wenn kein Cache-Name angegeben wird, wird eine Konfigurationsausnahme ausgelöst. |
enableSessionLocking |
Ein optionales Boolean Attribut. Wenn dieses Flag gesetzt ist, wird die NCache Der Sitzungsspeicheranbieter sperrt ausschließlich das Sitzungsspeicherelement, für das mehrere gleichzeitige Anforderungen gestellt werden. Der Standardwert ist False. |
sessionLockingRetry |
Dies ist optional Integer Attribut. Wenn enableSessionLocking wahr ist und diese Ganzzahl nicht kleiner als 0 ist, ist die NCache Der Sitzungsspeicheranbieter gibt danach eine leere Sitzung zurück sessionLockingRetry , der die Anzahl der Wiederholungsversuche angibt, um eine Sperre zu erhalten. Der Standardwert ist -1. |
writeExceptionsToEventLog |
Ein optionales Boolean Attribut. Wenn dieses Flag gesetzt ist, werden alle Ausnahmen der Cache-API in Ereignisprotokolle geschrieben. Der Standardwert ist False. |
enableLogs |
Es ist optional Boolean Attribut. Wenn dieses Flag gesetzt ist, protokolliert der Speicheranbieter alle Fehlerinformationen. Die Protokolldateien werden in erstellt %NCHOME%\log-files\SessionStoreProvider (Windows) oder /opt/ncache/log-files/SessionStoreProvider (Linux). Der Standardwert ist False. |
enableDetailLogs |
Ein optionales Boolean Attribut. Wenn dieses Flag gesetzt ist, protokolliert der Speicheranbieter alle Debuginformationen. Die Protokolldateien werden in erstellt %NCHOME%\log-files\SessionStoreProvider (Windows) oder /opt/ncache/log-files/SessionStoreProvider (Linux). Der Standardwert ist False. |
exceptionsEnabled |
Dies ist optional Boolean Attribut, das angibt, ob Ausnahmen von der Cache-API an die Seitenausgabe weitergegeben werden. Das Setzen dieses Flags auf „True“ ist besonders während der Entwicklungsphase der Anwendung hilfreich, da Ausnahmen mehr Informationen über die spezifischen Fehlerursachen liefern. Der Standardwert ist False. |
operationRetry |
Sie gibt an, wie oft der Server den Vorgang wiederholt, falls während der Ausführung eines Vorgangs die Verbindung zu einem Server unterbrochen wird. Der Standardwert ist 0 (Null). |
operationRetryInterval |
Es gibt das Zeitintervall zwischen jedem Wiederholungsversuch des Vorgangs an, für den Fall, dass die Verbindung zum Server verloren geht. Der Standardwert ist 0 (Null). |
usejsonserialization |
Dies ist ein boolesches Attribut. Wenn Sie die JSON-Serialisierung für Ihre ASP.NET-Sitzungsobjekte verwenden möchten, legen Sie den Wert dieses Attributs auf „True“ fest. Standardmäßig ist der Wert dieses Attributs False. |
Siehe auch
.NETZ: Alachisoft.NCache.Web.SessionState Namespace.