ASP NET核心MVC - 如何配置进程外会话状态?

时间:2016-07-22 22:17:59

标签: asp.net-core asp.net-core-mvc

有没有办法在ASP.NET Core MVC中配置进程外会话状态(使用Windows状态服务器或SQL Server)?

2 个答案:

答案 0 :(得分:2)

重要的是会话数据由缓存支持。您需要将IDistributedCache实现添加到应用程序服务,而不是内存缓存,即:

SQL Server的

services.AddDistributedSqlServerCache(options =>
    {
        options.ConnectionString = @"your_connection_string";
        options.SchemaName = "dbo";
        options.TableName = "TestCache";
    });

(确保您的项目中添加了Microsoft.Extensions.Caching.SqlServer个包)

Redis的

services.AddDistributedRedisCache(options =>
    {
        options.Configuration = "localhost";
        options.InstanceName = "SampleInstance";
    });

(包裹:Microsoft.Extensions.Caching.Redis

我不知道是否有Windows State Server for ASP.NET Core分布式缓存的实现。

分布式会话的文档链接:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed

有关ASP.NET Core中会话的更多信息:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state

答案 1 :(得分:0)

感谢Marcin。我想出来了......但是当定位net46而不是核心时很难让它工作(不是所有版本的Microsoft.Extensions.Caching.SqlConfig.Tools都受到net46的支持,因为我的应用程序并不明显没有抛出错误 - 只是为我正在设置的会话变量获取空值...)

最终对我有用的是project.json中的这个配置:

在依赖项下:

"Microsoft.AspNetCore.Session": "1.0.0",
"Microsoft.Extensions.Caching.SqlServer": "1.1.0-preview1-final",
"Microsoft.Extensions.Caching.SqlConfig": "1.0.0-rc1-final"

在工具下:

"Microsoft.Extensions.Caching.SqlConfig.Tools": "1.0.0-rc1-final"
相关问题