Совместное использование сеанса между ASP.NET Forms и ASP.NET Core

У меня есть веб-приложение ASP.NET Forms, которое использует RedisSessionProvider. Это настраивается только через WebConfig со следующим.

<sessionState mode="Custom" customProvider="RedisSessionProvider">
  <providers>
    <add name="RedisSessionProvider" applicationName="myApp" type="Microsoft.Web.Redis.RedisSessionStateProvider" connectionString="RedisConnection" ssl="true" />
  </providers>
</sessionState>
<connectionStrings>
<add name="RedisConnection" connectionString="host:port,password=myPassword,ssl=True,abortConnect=False"/></connectionStrings>

Я хотел бы поделиться этим с ASP.NET Core SubSite/SubApplication. Я могу поделиться им с другими дочерними сайтами, которые являются ASP.NET (MVC/Forms), просто добавив ссылку и добавив вышеупомянутое в их WebConfigs.

Тем не менее, для.NET Core, я не могу понять, как поделиться им. Имейте в виду, что код сайта форм ASP.NET блокируется на 3 месяца, поэтому мы не можем вносить в него какие-либо изменения.

В приложении ASP.NET Core я ссылался на Microsoft.AspNetCore.DataProtection и StackExchange.Redis. И иметь следующий код в Startup.cs

public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddSingleton<IConfiguration>(Configuration);
        string redisConnectionString = Configuration.GetValue<string>("Redis:ConnectionString");
        string redisKey = Configuration.GetValue<string>("Redis:Key");
        var redis = ConnectionMultiplexer.Connect(redisConnectionString);
        services.AddDataProtection().PersistKeysToRedis(redis, redisKey).SetApplicationName("myApp");
        services.AddAuthentication("Identity.Application").AddCookie("Identity.Application", 
            options =>
        {
            options.Cookie.Name = "ASP.NET_SessionId";
        });
        services.AddSession(options =>
        {
            options.Cookie.Name = "ASP.NET_SessionId";
        });
        services.AddOptions();
    }

И я добавил app.UseSession() в публичный void Configure(...).

Это переименовывает cookie в то же самое, что и хост-сайт, но не дает мне доступ к тому же хранилищу сеансов. Я предполагаю, что это как-то связано с тем, как файлы cookie шифруются в ядре.NET против ASP.NET.

Что я пытаюсь сделать возможным без изменения сайта Host .NET Forms? Если это возможно только в том случае, если я изменил хост (это должно было произойти в будущем), что я должен был бы делать там?

0 ответов

Другие вопросы по тегам