Попытка использовать Redis Cache в качестве хранилища сеансов в уже существующем веб-приложении, разработанном в ядре asp.net mvc (2.1.1).
имел в виду https://garywoodfine.com/redis-inmemory-cache-asp-net-mvc-core/
и https://joonasw.net/view/redis-cache-session-store, но при попытке проверить значения установки / получения сеанса в Redis Desktop Manager ничего не отображается.
Требуются ли какие-либо дополнительные шаги, чтобы хранилище сеансов использовало кэш Redis вместо параметра по умолчанию в памяти (in-proc)?
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDistributedRedisCache(options =>
{
options.InstanceName = Configuration.GetValue<string>
("redis:name");
options.Configuration = Configuration.GetValue<string>
("redis:host");
});
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddSessionStateTempDataProvider();
services.AddSingleton<IDistributedCache, RedisCache>();
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(60);
});
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Login}/{action=Login}/{id?}");
});
}
}
appsettings
"redis": {
"host": "127.0.0.1",
"port": 6379,
"name": "localhost"
},
Используется пакет Nuget
Microsoft.Extensions.Caching.Redis2.1.1
Пример использования в действии Метод
var storedValue = "Redis TimeStamp : " + DateTime.Now.ToString("s");
HttpContext.Session.SetString("TestValue", storedValue);
HttpContext.Session.CommitAsync();
Оцените любые указатели или указания по этому вопросу.
TIA