如何在.net核心中实现进程内共享会话对于负载均衡器

问题描述 投票:0回答:1

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

我想通过Asp.net中的Load balancer在两台服务器之间共享会话Core可以任何人建议我如何实现inproc会话吗?

谢谢。

asp.net asp.net-mvc asp.net-core asp.net-core-2.0
1个回答
1
投票

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

如果要使用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();
}

}

© www.soinside.com 2019 - 2024. All rights reserved.