如何在.net核心中实现In-proc共享会话以实现负载均衡器

时间:2018-09-12 07:08:26

标签: asp.net asp.net-mvc asp.net-core asp.net-core-2.0

当负载平衡器切换我的应用程序的服务器时,我面临会话过期问题。

我想通过Asp.net Core中的负载均衡器在两台服务器之间共享会话,有谁能建议我如何实现Inproc会话?

谢谢。

1 个答案:

答案 0 :(得分:1)

InProc会话不会帮助您,因为它仅驻留在Web服务器上。如果由于负载平衡或故障转移而切换服务器,则会丢失会话。您正在寻找的是IDistributedCache。可以在docs中找到使用Redis或SQL的示例(认真阅读它们,它们很棒!)

如果要使用Redis,则需要先为其安装软件包

Install-Package Microsoft.Extensions.Caching.Redis

然后,在您的ConfigureServices方法上对其进行配置:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDistributedRedisCache(options =>
    {
        options.Configuration = "localhost";
        options.InstanceName = "SampleInstance";
    });
}

然后将.UseSession添加到您的Configure方法中:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    /*... omitted ...*/
    app.UseCookiePolicy();
    app.UseSession();
    app.UseHttpContextItemsMiddleware();
    app.UseMvc();
}

}