gpt4 book ai didi

c# - 使用 Redis 缓存作为 session 存储 asp.net core

转载 作者:IT王子 更新时间:2023-10-29 06:06:04 24 4
gpt4 key购买 nike

尝试将 Redis 缓存用作在 asp.net mvc core ( 2.1.1) 中开发的现有 Web 应用程序中的 session 存储。

指的是 https://garywoodfine.com/redis-inmemory-cache-asp-net-mvc-core/

https://joonasw.net/view/redis-cache-session-store但是当尝试在 Redis 桌面管理器中检查 session 设置/获取值时,没有显示任何内容。

是否需要任何额外的步骤来使 session 存储使用 Redis 缓存而不是默认的内存中(进程中)选项?

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?}");
});
}
}

应用设置

 "redis": {
"host": "127.0.0.1",
"port": 6379,
"name": "localhost"
},

使用的 Nuget 包

Microsoft.Extensions.Caching.Redis 2.1.1

Action 方法中的示例用法

 var storedValue = "Redis TimeStamp : " + DateTime.Now.ToString("s");
HttpContext.Session.SetString("TestValue", storedValue);
HttpContext.Session.CommitAsync();

感谢任何关于此的指示或方向。

TIA

最佳答案

检查这个:

//Shared Session in RedisCache

using StackExchange.Redis;
using Microsoft.AspNetCore.DataProtection;

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();

services.AddDataProtection()
.SetApplicationName("vextus")
.PersistKeysToRedis(ConnectionMultiplexer.Connect(Configuration.GetConnectionString("RedisConnection")),
"DataProtection-Keys");


services.AddDistributedRedisCache(o =>
{
o.Configuration = Configuration.GetConnectionString("RedisConnection");
});

services.AddSession(o =>
{
o.Cookie.Name = "vextus";
o.Cookie.SameSite = SameSiteMode.None;
o.Cookie.HttpOnly = true;
o.IdleTimeout = TimeSpan.FromMinutes(10);
});
}

关于c# - 使用 Redis 缓存作为 session 存储 asp.net core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53743138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com