在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对象中找到它作为属性,但它似乎并不存在.我搜索过高低,这似乎没有记录在任何地方.思考?
解决方法
这似乎是
DistributedSession类中的私有字段.所以目前,你无法得到它. Session似乎缺少旧版
HttpSessionState课程中的很多属性,但我找不到任何指向原因的东西(可能有一个好的!).
你可以用反射得到它,但它非常粗糙.以下示例使用this answer.
public IActionResult Index() { var value = GetInstanceField(typeof(DistributedSession),HttpContext.Session,"_idleTimeout"); return View(); }
我建议将值存储在配置文件或某个内部类中.