【问题标题】:How to access Session Timeout value in Asp.Net Core MVC 1.0 (aka MVC 6 RC1)?如何访问 Asp.Net Core MVC 1.0(又名 MVC 6 RC1)中的会话超时值?
【发布时间】:2016-05-10 05:10:24
【问题描述】:

在 Asp.Net Core MVC 1.0 (MVC 6 RC1) 中,当在 Startup.cs 的 ConfigureServices 方法中添加会话支持时,会指定会话超时期限,如下所示:

services.AddSession(options =>
        {
            options.IdleTimeout = TimeSpan.FromMinutes(30);
            options.CookieName = "Session";
        });

我的问题是:如何在应用程序的其他地方访问这个IdleTimeout 值?

我希望找到它作为 HttpContext.Session 对象的属性,但它似乎不存在。我已经搜索了高低,这似乎没有记录在任何地方。想法?

【问题讨论】:

    标签: asp.net-core-mvc


    【解决方案1】:

    这似乎是@987654321@ 类中的私有字段。所以目前,你无法得到它。 Session 似乎缺少旧 HttpSessionState 类中的许多属性,但我找不到任何指向可能原因的东西(可能有一个很好的原因!)。

    可以通过反射得到它,但它非常粗糙。下面的例子使用this answer

    public IActionResult Index()
    {
        var value = GetInstanceField(typeof(DistributedSession), HttpContext.Session, "_idleTimeout");
        return View();
    }
    

    我建议将值存储在配置文件或 internal class 某处。

    【讨论】:

    • +1 建议将值存储在别处并使用它来设置options.IdleTimeout。这不是我想要解决问题的方式,但如果它是反映私有成员 var 的唯一替代方法,那么它是两个 hack 中更好的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2015-12-19
    • 1970-01-01
    • 2020-04-10
    • 2022-08-17
    相关资源
    最近更新 更多