【发布时间】:2021-01-05 17:01:35
【问题描述】:
我正在尝试使用 Redis 缓存来维护 ASP.NET Core MVC 3.1 网站上应用重新启动之间的会话状态。但是,当应用重新启动时,所有会话信息都会丢失。
在我的本地 (Mac) 机器上的开发环境中一切正常,但是当部署到 Ubuntu 18.04 服务器时,所有会话信息在重新启动之间都会丢失。
我的Startup.cs 文件中的相关代码看起来像(删除了很多不相关的东西):
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpContextAccessor();
services.AddStackExchangeRedisCache(options =>
{
options.Configuration = "localhost";
options.InstanceName = "sessionState";
});
services.AddSession(options =>
{
// Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromMinutes(600);
});
var mvc = services.AddControllersWithViews();
#if (DEBUG)
mvc.AddRazorRuntimeCompilation();
#endif
services.AddMvc(option => option.EnableEndpointRouting = false);
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSession();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
服务器是 Ubuntu 18.04 服务器,运行 ASP.NET Core 3.1 运行时。
Redis 已安装并正在运行,我可以看到使用 redis-cli 和 keys * 的会话密钥列表。运行sudo systemctl status redis 输出:
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-01-05 03:36:30 UTC; 1h 10min ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Process: 8916 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 8920 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
Main PID: 8950 (redis-server)
Tasks: 4 (limit: 1115)
CGroup: /system.slice/redis-server.service
└─8950 /usr/bin/redis-server 127.0.0.1:6379
我已经尝试了各种方法来让会话在应用重新启动之间保持活跃,但我觉得我错过了一些明显的东西。提前感谢您的帮助。
【问题讨论】:
标签: asp.net-core redis