【问题标题】:How can I make a custom session provider work with ASP.NET 5? Specically use Redis for sessions如何使自定义会话提供程序与 ASP.NET 5 一起使用?专门使用 Redis 进行会话
【发布时间】:2015-11-28 03:38:51
【问题描述】:

在 ASP.NET MVC 4 中,要为自定义会话提供程序切换默认会话提供程序,您必须通过 web.config 让应用知道,而现在在 ASP.NET 5 中已不存在。

我尝试使用 Microsoft.Web.RedisSessionStateProvider(它基于 StackExchange.Redis),但不知道如何通过 NuGet 获取它。它根本行不通。

我错过了什么?

【问题讨论】:

    标签: asp.net-mvc redis asp.net-core stackexchange.redis


    【解决方案1】:

    以下是一个 Session 示例,您可以在其中使用 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";
    }
    

    【讨论】:

    • 示例中没有说明如何设置Redis服务器的IP和密码。
    • @KiranChalla 它没有帮助我......出于某种原因,这对我来说没有意义,它认为 Configuration 属性是 IConfiguration 类型,而在现实生活中,它是字符串。
    • @AngryHacker:看起来我的样本不正确……现在更新了。
    • @KiranChalla 它可以编译...但是,我仍然无法使实际的会话正常工作。你会碰巧有一个示例项目,将会话保存到 Redis 盒子吗?
    【解决方案2】:

    几个月前,我有一个应用程序(类似于https://github.com/aspnet/Session/blob/dev/samples/SessionSample/Startup.cs)连接到远程 Redis 服务器,如下所示:

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

    现在在 beta7 中可能有所不同,但希望这会有所帮助。

    【讨论】:

    • 您是否介意将该应用程序发布到某个地方(或它的骨架)。无论我尝试过什么(包括上面的代码),它都无法与最新的测试版一起使用。
    • 给你gist.github.com/opiethehokie/338630cbf12a8a80e851。我试图在 Cloud Foundry 中运行它,因此我的 Redis 凭据来自环境变量,您可以忽略该部分。但它不能在 Linux 上运行,它只能在 Windows 上运行。
    • 是的,我也在 Windows 上运行它。你的代码有帮助,我现在走得更远了。我缺少的部分是必须在调用 app.UseMvc 之前设置所有内容。事后我正在设置会话。无论如何,此时我在 Controller 操作中调用 Context.Session.SetString("foo", "bar"); 并获得 ERR unknown command 'EVAL'。知道从这里去哪里吗?
    猜你喜欢
    • 2015-03-10
    • 2011-04-07
    • 2014-08-06
    • 2012-04-28
    • 1970-01-01
    • 2011-06-09
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多