ASP für mehrere Regionen.NET Core Sitzungsanbieter
NCache stellt ASP bereit.NET Core Unterstützung für die gemeinsame Nutzung von Sitzungen in mehreren Regionen. Dies verhindert, dass Benutzer ihre Sitzungen verlieren, falls sie ihren Datenverkehr aufgrund von Datenverkehr oder einer Notfallwiederherstellung an einen anderen Standort umleiten müssen. Sitzungen werden nahtlos über das WAN repliziert, ohne dass die gesamte Sitzung repliziert wird, was zu Bandbreitenkosten führen kann.
Abbildung 1: Sitzungsfreigabe über Rechenzentren hinweg
ASP teilen.NET Core Für eine regionsübergreifende Sitzung müssen Sie die Standortaffinität aktivieren. Dies wird ermöglicht, indem das Flag „EnableLocationAffinity“ auf „true“ gesetzt wird und die Cache-Namen und Präfixe bereitgestellt werden, um die Quelle (den Speicherort) des Caches für die Anforderung zu identifizieren. Sie können mehrere Cache-Namen angeben, die die Webfarm bilden. Der unter CacheName angegebene Cache wird jedoch standardmäßig als primärer Cache betrachtet.
Voraussetzungen für die Konfiguration von ASP mit mehreren Regionen.NET Core Sitzungsanbieter
- Installieren Sie die folgenden NuGet-Pakete basierend auf Ihrer Anwendung in Ihrer Anwendung NCache Version:
- Unternehmen: AspNetCore.Session.NCache
- Professional: AspNetCore.Session.NCache.Fachmann
- Open Source: AspNetCore.Session.NCache.Open Source
- Um die Erweiterung zu nutzen, schließen Sie die folgenden Namespaces in Ihre Anwendung ein Startup.cs:
- Der Cache muss ausgeführt werden.
- Einzelheiten zur API finden Sie unter: SpeichernNCacheSession, Verwenden Sie dieNCacheSession.
- Stellen Sie sicher, dass die hinzugefügten Daten serialisierbar.
- Um sicherzustellen, dass der Vorgang ausfallsicher ist, wird empfohlen, alle potenziellen Ausnahmen in Ihrer Anwendung zu behandeln, wie in erläutert Umgang mit Fehlern.
- Informationen zum Umgang mit unsichtbaren Ausnahmen finden Sie unter Problemlösung .
Schritt 1: Dienste konfigurieren
Der Sitzungsverwaltungsdienst muss initialisiert werden. In Startup.cs, Verwenden Sie die AddNCacheSession()
Erweiterungsmethode ein IServiceCollection
in ConfigureServices()
um den Dienst zu initialisieren. Die sehr grundlegende Überladung dieser Erweiterungsmethode dauert an IOptions<NCacheSessionConfiguration>
als Basiskonfiguration.
Es gibt zwei Methoden, um Konfigurationen anzugeben:
- Durch Ihre Anwendung Startup.cs or
- Im JSON-Format in Appsettings.json .
Methode 1: Angeben von Konfigurationen in Startup.cs
Um die Sitzungsfreigabe zu aktivieren, muss Folgendes festgelegt werden EnableLocationAffinity
Flag auf true setzen und die Liste der Caches in angeben AffinityMapping
. Beachten Sie, dass einer der Caches mit dem CacheName übereinstimmen sollte, der als primärer Cache gilt. Es ist außerdem erforderlich, ein Verzeichnis anzugeben, das von beiden Anwendungen gemeinsam genutzt wird.
Note
Das Cache-Präfix sollte maximal 4 Zeichen lang sein.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(dir))
.SetApplicationName("SharedCookieApp");
services.AddNCacheSession(configuration =>
{
configuration.CacheName = "LondonCache"; //compulsory
configuration.EnableLogs = true;
configuration.SessionOptions.IdleTimeout = 5;
configuration.EnableLocationAffinity = true;
configuration.AffinityMapping = new CacheAffinity[]
{
new CacheAffinity { CacheName = "LondonCache", CachePrefix = "LDNC"},
new CacheAffinity { CacheName = "NewYorkCache", CachePrefix = "NYKC"},
new CacheAffinity { CacheName = "TokyoCache", CachePrefix = "TKYC"},
};
});
}
Methode 2: Angeben von Konfigurationen in Appsettings.json
Der Sitzungsverwaltungsdienst muss initialisiert werden. In Startup.cs, Verwenden Sie die AddNCacheSession()
Erweiterungsmethode ein IServiceCollection
in ConfigureServices()
um den Dienst zu initialisieren. Die sehr grundlegende Überladung dieser Erweiterungsmethode dauert an IOptions<NCacheSessionConfiguration>
als Basiskonfiguration.
Note
Das Cache-Präfix sollte maximal 4 Zeichen lang sein.
"NCacheSettings": {
"EnableLocationAffinity": true,
"EnableLogs": true,
"RequestTimeout": 5,
"CacheName": "LondonCache",
"AffinityMapping": [
{
"CacheName": "LondonCache",
"CachePrefix": "LDNC"
},
{
"CacheName": "NewYorkCache",
"CachePrefix": "NYKC"
},
{
"CacheName": "TokyoCache",
"CachePrefix": "TKYC"
}
]
}
public void ConfigureServices(IServiceCollection services)
{
//Add framework services
services.AddMvc();
//Add services to the container
services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
}
Schritt 2: Middleware zur Anwendung hinzufügen
Sobald die Dienste initialisiert wurden, können Sie die HTTP-Anforderungspipeline konfigurieren, indem Sie Middleware hinzufügen Configure()
Methode. Das Folgende ist ein Auszug, der das Hinzufügen einer Middleware-Schicht durch die Verwendung von zeigt UseNCacheSession()
Erweiterungsmethode in IApplicationBuilder
dem „Vermischten Geschmack“. Seine NCache Session-Middleware sollte immer vor der Schicht gestapelt werden, die die Sessions nutzt.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment()){
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseNCacheSession(); //store NCache session data
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=myApp}/{action=Index}/{id?}");
});
}
Sie können jetzt fortfahren - NCache als zugrundeliegender Cache für Ihren ASP.NET Core Sitzungen.
Weitere Informationen
NCache stellt eine Beispielanwendung für Session Caching bereit GitHub.
- Versand mit NCache: %NCHOME%\samples\dotnetcore\SessionCaching
Siehe auch
.NETZ: Alachisoft.NCache.Web.SessionState Namespace.