【发布时间】:2017-02-07 13:17:41
【问题描述】:
有没有办法使用 ASP.NET Core MVC 配置进程外会话状态(使用 Windows 状态服务器或 SQL Server)?
【问题讨论】:
标签: asp.net-core asp.net-core-mvc
有没有办法使用 ASP.NET Core MVC 配置进程外会话状态(使用 Windows 状态服务器或 SQL Server)?
【问题讨论】:
标签: asp.net-core asp.net-core-mvc
重要的是会话数据由缓存支持。您需要将 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)
不知道有没有针对 ASP.NET Core 分布式缓存的 Windows State Server 的实现。
分布式会话的文档链接: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
【讨论】:
谢谢马尔辛。我想通了......但是当以net46而不是核心为目标时,让它工作起来很棘手(并非所有版本的Microsoft.Extensions.Caching.SqlConfig.Tools都受net46支持,而且这并不明显,因为我的应用程序不是' t 抛出错误 - 只是为我设置的会话变量获取 null 值...)
最终对我有用的是 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"
【讨论】: