有没有办法在ASP.NET Core MVC中配置进程外会话状态(使用Windows状态服务器或SQL Server)?
答案 0 :(得分:2)
重要的是会话数据由缓存支持。您需要将IDistributedCache实现添加到应用程序服务,而不是内存缓存,即:
SQL Server的:
services.AddDistributedSqlServerCache(options =>
{
options.ConnectionString = @"your_connection_string";
options.SchemaName = "dbo";
options.TableName = "TestCache";
});
(确保您的项目中添加了Microsoft.Extensions.Caching.SqlServer
个包)
:
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"