如何在 ASP.NET 5.0 (vNext) MVC 6 中配置 SQL 会话状态?

How do you configure SQL Session State in ASP.NET 5.0 (vNext) MVC 6?

在 Visual Studio 2015 RC,ASP.NET 5 vNext 中,我正在尝试在 MVC 6 中使用 SQL 会话状态。我不确定该怎么做。谁能给我看样品或给我一些提示?

我正在试用 Azure 负载均衡器。我设置了一个负载平衡集并 link 将两个虚拟机连接到它。 当我转到具有以下代码的视图时,它按预期工作,因为我可以看到机器名称在两个 VM 之间发生变化。 @System.Environment.MachineName

我尝试启用会话,如此 link How to implement Session State in ASP.NET vNext MVC 6 所示。 但由于此会话保留在服务器中,因此当用户移动到负载平衡集中的另一台服务器时,会话状态不会在服务器之间持续存在。

我知道如果使用 SQL 服务器会话状态,您可以保持相同的会话。在 ASP.NET 4 中,只需更改 web.config 中的 sessionState 元素即可轻松完成,如下所示。

<sessionState 
            mode="SQLServer"
            sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
            cookieless="false" 
            timeout="20" 
    />

我希望任何人都可以告诉我如何在 ASP.NET 5 (vnext)

中完成此操作

对 SQL 服务器会话状态的支持目前正在开发中。所以你现在最好的选择是使用内存会话(它有你提到的关于负载均衡器场景后面的多个服务器的状态不持久的问题)。但是,您可以尝试使用 Redis 缓存(ASP.NET 5 会话实现依赖于基于 IDistributedCache 的实现,其中有一个用于 Redis 缓存的实现)。

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IDistributedCache, RedisCache>();
    services.AddSession();

//-----------

public void Configure(IApplicationBuilder app)
{
   app.UseSession();

您需要参考以下包:

Microsoft.Framework.Caching.Redis
Microsoft.AspNet.Session