【问题标题】:How do you configure SQL Session State in ASP.NET 5.0 (vNext) MVC 6? [closed]如何在 ASP.NET 5.0 (vNext) MVC 6 中配置 SQL 会话状态? [关闭]
【发布时间】:2015-08-31 04:27:01
【问题描述】:

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

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

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

我知道如果使用 SQL Server 会话状态,您可以保持同一个会话。在 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 会话状态来完成什么?你能给我们举个例子吗?

标签: sql-server configuration session-state asp.net-core asp.net-core-mvc


【解决方案1】:

目前正在开发对 SQL Server 会话状态的支持。所以你现在最好的选择是使用内存中的会话(你提到的关于负载均衡器类型场景后面的多个服务器的状态不持久的问题)。但是您可以尝试使用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

【讨论】:

  • 感谢您提供的信息。我认为 RC 意味着它几乎都准备好了 :) 你知道微软添加 SQL Server 会话状态的时间表吗?我是否过于天真/乐观地尝试将 ASP.NET 用于生产目的?
  • RC 实际上适用于 Visual Studio,因为 ASP.NET 5 仍处于测试阶段。我知道这很令人困惑,但到目前为止就是这样。 SQL Server 会话状态实现应该在下一个 Beta 版中可用,但我不能保证时间表:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 2020-11-19
  • 1970-01-01
  • 2011-02-06
  • 2011-04-27
  • 2017-01-01
  • 2012-03-02
相关资源
最近更新 更多