Aracılığıyla paylaş


Uzak uygulama oturum durumu

Uzak uygulama oturum durumu, oturum durumunu almak için ASP.NET Core ile ASP.NET uygulaması arasındaki iletişimi etkinleştirir. Bu, ASP.NET uygulamasında oturum durumunu almak ve ayarlamak için sorgulanabilen bir uç noktanın açığa alınmasıyla etkinleştirilir.

HttpSessionState serileştirmesi

Uzak uygulama oturum durumunun HttpSessionState etkinleştirilmesi için nesne seri hale getirilmelidir. Bu, varsayılan ikili yazıcı uygulamasının sağlandığı türünün Microsoft.AspNetCore.SystemWebAdapters.SessionState.Serialization.ISessionSerializeruygulanmasıyla gerçekleştirilir. Bu, aşağıdaki kod tarafından eklenir:

builder.Services.AddSystemWebAdapters()
    .AddSessionSerializer(options =>
    {
        // Customize session serialization here
    });

Yapılandırma

İlk olarak, ASP.NET Core ve ASP.NET uygulamalarını bağlamak için uzak uygulama kurulum yönergelerini izleyin. Ardından, uzak uygulama oturum durumunu etkinleştirmek için çağrılacak birkaç ek uzantı yöntemi vardır.

ASP.NET Core yapılandırması, bilinen oturum öğesi türlerini çağırmayı AddRemoteAppSession ve AddJsonSessionSerializer kaydetmeyi içerir. Kod aşağıdakine benzer görünmelidir:

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();

Oturum desteği, ASP.NET Core işlem hattı için ek çalışma gerektirir ve varsayılan olarak açık değildir. ASP.NET Core meta verileri aracılığıyla yol başına temelinde yapılandırılabilir.

Örneğin, oturum desteği için bir denetleyiciye açıklama eklemek gerekir:

[Session]
public class SomeController : Controller
{
}

veya varsayılan olarak tüm uç noktaları etkinleştirmek için:

app.MapDefaultControllerRoute()
    .RequireSystemWebAdapterSession();

Çerçeve eşdeğeri, içinde Global.asax.csaşağıdaki değişikliğe benzer olacaktır:

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();

Protokol

Salt okunur

Salt okunur oturum, herhangi bir kilitleme olmadan çerçeve uygulamasından oturum durumunu alır. Bu, bir oturum durumu döndürecek ve hemen kapatılacak tek GET bir istektir.

Readonly session will retrieve the session state from the framework app

Yazılabilir

Yazılabilir oturum durumu protokolü salt okunur ile başlar, ancak aşağıdakilerden farklıdır:

  • Durumu güncelleştirmek için ek PUT bir istek gerektirir
  • Oturum tamamlanıncaya kadar ilk GET istek açık tutulmalıdır; kapatılırsa oturum güncelleştirilemez

Writeable session state protocol starts with the same as the readonly