当负载平衡器切换我的应用程序的服务器时,我面临会话过期问题。
我想通过Asp.net Core中的负载均衡器在两台服务器之间共享会话,有谁能建议我如何实现Inproc会话?
谢谢。
答案 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();
}
}