当负载均衡器切换我的应用程序的服务器时,我正面临会话过期问题。
我想通过Asp.net中的Load balancer在两台服务器之间共享会话Core可以任何人建议我如何实现inproc会话吗?
谢谢。
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();
}
}