Что еще мне нужно, чтобы хранение в Redis кеш в C#?
Я установил XX из nuget и StackExchange.Redis.StrongName, также поместил следующую конфигурацию в web.config RedisSessionStateProvider
<sessionState mode="Custom" customProvider="RedisSessionProvider" cookieless="true" > <providers> <add name="RedisSessionProvider" type="Microsoft.Web.Redis.RedisSessionStateProvider" port="6380" host="XXX.redis.cache.windows.net" accessKey="OQm………15E=" ssl="true" connectionTimeoutInMilliseconds="5000" operationTimeoutInMilliseconds="1000" retryTimeoutInMilliseconds="3000" writeExceptionsToEventLog="true" /></providers>
но я не могу сохранить сеанс на Redis, но если я установлю соединение с кодом, это будет успешно. мой код:
/// установить соединение
private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
var redisOption = new ConfigurationOptions();
return ConnectionMultiplexer.Connect("XXX.redis.cache.windows.net:6380,abortConnect=false,ssl=true,password=OQmAPmp0 . . . . TJE15E=");
});
///return connection object
public static ConnectionMultiplexer Connection
{
get
{
return lazyConnection.Value;
}
}
///the session is created and added some elements manually in redis to test
public ActionResult SessionStart()
{
IDatabase cache = Connection.GetDatabase();
Session["loginTime"] = DateTime.Now.ToString();
string strValue = "myvalue";
Session.Add("myvalue ", strValue);
return View();
}
Мне нужно хранить сессию автоматически в Redis, пожалуйста, помогите мне!
2 ответа
Решением было переустановить пакеты RedisSessionStateProvider и StackExchange.Redis.StrongName из nuget, после чего нужно изменить некоторые вещи в веб-конфигурации
Web.config
<sessionState mode="Custom" customProvider="MySessionStateStore" >
<providers>
<add name="MySessionStateStore"
type="Microsoft.Web.Redis.RedisSessionStateProvider"
host="abcde1234.redis.cache.windows.net"
accessKey="FuDmzfO3B/6M1cX1ls="
ssl="true" throwOnError="true" port="6380" writeExceptionsToEventLog="true"
databaseId = "1"
/>
</providers>
</sessionState>
КОНТРОЛЛЕР
И только затем создайте объект сеанса:
Session["test-" + Guid.NewGuid().ToString()] = DateTime.Now.ToLongDateString();
Вы можете использовать Redis Desktop Manager для отслеживания значений или портал Azure.
решение было предоставлено @juank.
@Luca Detomi вы можете просмотреть ответ
Это не может быть настолько автоматическим, вам нужна еще одна дополнительная библиотека для объединения Redis и ASP.NET и небольшая модификация web.config. Например, следующее должно быть сделано, если вы не привязаны к StackExchange.Redis https://github.com/TheCloudlessSky/Harbour.RedisSessionStateStore, или для этого используется StackExchange.Redis, как в вашем случае https://github.com/welegan/RedisSessionProvider