Remote-App-Sitzungsstatus
Der Remote-App-Sitzungsstatus ermöglicht die Kommunikation zwischen der ASP.NET Core- und ASP.NET-App, um den Sitzungsstatus abzurufen. Dies wird aktiviert, indem ein Endpunkt für die ASP.NET-App verfügbar gemacht wird, der abgefragt werden kann, um den Sitzungsstatus abzurufen und festzulegen.
HttpSessionState-Serialisierung
Das HttpSessionState-Objekt muss serialisiert werden, damit der Remote-App-Sitzungsstatus aktiviert werden kann. Dies wird durch die Implementierung des Typs Microsoft.AspNetCore.SystemWebAdapters.SessionState.Serialization.ISessionSerializer
erreicht, von dem eine standardmäßige Binary-Writer-Implementierung bereitgestellt wird. Dies wird durch den folgenden Code hinzugefügt:
builder.Services.AddSystemWebAdapters()
.AddSessionSerializer(options =>
{
// Customize session serialization here
});
Konfiguration
Befolgen Sie zunächst die Anweisungen zum Einrichten der Remote-App, um eine Verbindung zwischen der ASP.NET Core-App und der ASP.NET-App herzustellen. Dann gibt es nur ein paar zusätzliche Erweiterungsmethoden, die aufgerufen werden können, um den Remote-App-Sitzungsstatus zu aktivieren.
Die Konfiguration für ASP.NET Core umfasst das Aufrufen von AddRemoteAppSession
und AddJsonSessionSerializer
, um bekannte Sitzungselementtypen zu registrieren. Der Code sollte in etwa wie folgt aussehen:
builder.Services.AddSystemWebAdapters()
.AddJsonSessionSerializer(options =>
{
// Serialization/deserialization requires each session key to be registered to a type
options.RegisterKey<int>("test-value");
options.RegisterKey<SessionDemoModel>("SampleSessionItem");
})
.AddRemoteAppClient(options =>
{
// Provide the URL for the remote app that has enabled session querying
options.RemoteAppUrl = new(builder.Configuration["ReverseProxy:Clusters:fallbackCluster:Destinations:fallbackApp:Address"]);
// Provide a strong API key that will be used to authenticate the request on the remote app for querying the session
options.ApiKey = builder.Configuration["RemoteAppApiKey"];
})
.AddSessionClient();
Die Sitzungsunterstützung erfordert zusätzlichen Aufwand für die ASP.NET Core-Pipeline und ist standardmäßig nicht aktiviert. Sie kann routenbezogen über ASP.NET Core-Metadaten konfiguriert werden.
Die Sitzungsunterstützung erfordert beispielsweise entweder, dass ein Controller mit Anmerkungen versehen wird:
[Session]
public class SomeController : Controller
{
}
oder standardmäßig die Aktivierung für alle Endpunkte erfolgt:
app.MapDefaultControllerRoute()
.RequireSystemWebAdapterSession();
Das Frameworkäquivalent würde wie die folgende Änderung in Global.asax.cs
aussehen:
SystemWebAdapterConfiguration.AddSystemWebAdapters(this)
.AddJsonSessionSerializer(options =>
{
// Serialization/deserialization requires each session key to be registered to a type
options.RegisterKey<int>("test-value");
options.RegisterKey<SessionDemoModel>("SampleSessionItem");
})
// Provide a strong API key that will be used to authenticate the request on the remote app for querying the session
// ApiKey is a string representing a GUID
.AddRemoteAppServer(options => options.ApiKey = ConfigurationManager.AppSettings["RemoteAppApiKey"])
.AddSessionServer();
Protocol
Readonly
Die schreibgeschützte Sitzung ruft den Sitzungsstatus ohne jede Art von Sperrung aus der Framework-App ab. Dies besteht aus einer einzelnen GET
-Anforderung, die einen Sitzungsstatus zurückgibt und sofort geschlossen werden kann.
Schreibbar
Das beschreibbare Sitzungsstatusprotokoll beginnt genauso wie das schreibgeschützte Protokoll, unterscheidet sich jedoch im Folgenden:
- Erfordert eine zusätzliche
PUT
-Anforderung, um den Status zu aktualisieren - Die ursprüngliche
GET
-Anforderung muss geöffnet bleiben, bis die Sitzung abgeschlossen ist. Wenn sie geschlossen wird, kann die Sitzung nicht aktualisiert werden
ASP.NET Core