2015-09-02 2 views
4

В ASP.NET MVC 4, чтобы отключить поставщика сеанса по умолчанию для пользовательского, вам нужно было сообщить об этом через web.config, который теперь пропал в ASP.NET 5.Как я могу создать собственный поставщик сеансов с ASP.NET 5? Специально используйте Redis для сеансов

Я попытался использовать Microsoft.Web.RedisSessionStateProvider (который основан на StackExchange.Redis), но не уверен, как действовать дальше, чем получать его через NuGet. Это просто не работает.

Что мне не хватает?

ответ

3

Ниже приведен пример сеанса, где вы можете использовать кэш Redis в качестве хранилища для него:

https://github.com/aspnet/Session/blob/dev/samples/SessionSample/Startup.cs#L32-L39

Вы можете настроить параметры кэша Redis, как показано ниже:

services.Configure<RedisCacheOptions>(redisOptions => 
{ 
    redisOptions.Configuration = "localhost"; 
    redisOptions.InstanceName = "SampleInstance"; 
} 
+0

В примере не указано, как установить IP-адрес и пароль сервера Redis. – user2070369

+1

@ user2070369: Я обновил ответ ... это поможет? –

+0

@KiranChalla Это не помогло мне ... По какой-то причине это не имеет смысла для меня, он считает, что свойство Configuration имеет тип IConfiguration, где, как и в реальной жизни, есть строка. – AngryHacker

3

в одной точке пару месяцев назад у меня было приложение (похожее на https://github.com/aspnet/Session/blob/dev/samples/SessionSample/Startup.cs), подключающееся к удаленному серверу Redis следующим образом:

app.UseDistributedSession(new RedisCache(new RedisCacheOptions() 
{ 
    Configuration = "ip:port,password=xxx" 
})); 

Это, вероятно, сейчас отличается от бета-версии 7, но, надеюсь, это помогает.

+0

Не могли бы вы разместить это приложение где-нибудь (или его скелет). Независимо от того, что я пробовал (включая код выше), он просто не работает с последней бета-версией. – AngryHacker

+0

Здесь вы найдете https://gist.github.com/opiethehokie/338630cbf12a8a80e851. Я пытался запустить его в Cloud Foundry, поэтому мои учетные данные Redis поступали из переменной среды, вы можете игнорировать эту часть. Он не работал на Linux, но он работал только в Windows. – opiethehokie

+0

Да, я тоже запускаю его на окнах. Ваш код помог, и я продолжаю двигаться дальше. Часть, которую мне не хватало, заключается в том, что все должно быть установлено * до * вы вызываете app.UseMvc. После этого я организовал сеанс. В любом случае, в этот момент я вызываю 'Context.Session.SetString (« foo »,« bar »);' в моем действии Controller и получаю 'ERR неизвестную команду 'EVAL''. Любая идея, куда идти отсюда? – AngryHacker

Смежные вопросы