I am trying to share a session between two C# microservices using Redis. Currently, RedisDB is only adding keys with the format AuthMicroservice:* and an empty DataProtectionKeys entry. When the second microservice attempts to retrieve the session using HttpContext.Session.GetString(“UserId”), it returns null.
Here’s what I have so far:
Session Configuration in AuthMicroservice (is storing cookie session): :
var redisConnectionString = builder.Configuration.GetConnectionString("RedisConnection");
var redis = redisConnectionString != null ? ConnectionMultiplexer.Connect(redisConnectionString) : null;
builder.Services.AddDataProtection()
.PersistKeysToStackExchangeRedis(redis, "DataProtectionKeys");
builder.Services.AddStackExchangeRedisCache(option =>
{
option.Configuration = redisConnectionString;
option.InstanceName = "AuthMicroservice:";
});
// Configure Session
builder.Services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromDays(15);
options.Cookie.MaxAge = TimeSpan.FromDays(15);
options.Cookie.Name = "Session";
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});`
and MicroService session:
var redisConnectionString = builder.Configuration.GetConnectionString("RedisConnection");
var redis = redisConnectionString != null ? ConnectionMultiplexer.Connect(redisConnectionString) : null;
builder.Services.AddStackExchangeRedisCache(option =>
{
option.Configuration = redisConnectionString;
option.InstanceName = "GameMicroservice:";
});
// Configure Session
builder.Services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromDays(15);
options.Cookie.MaxAge = TimeSpan.FromDays(15);
options.Cookie.Name = "Session";
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
What could be causing this issue, and how can I properly share the session between the two microservices?