【问题标题】:How to get the SessionStateBehavior for a request?如何获取请求的 SessionStateBehavior?
【发布时间】:2015-12-22 09:09:44
【问题描述】:

我知道SessionState 属性可用于为特定MVC 控制器的请求设置SessionStateBehavior。我的问题是,如何以编程方式确定当前请求的SessionStateBehavior?我看到HttpContext 有一个internal property for this,但是有什么办法可以公开吗?

我特别想知道会话状态行为是否被禁用。

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc


    【解决方案1】:

    HttpContext.Current.Session == null 将检查禁用的会话 HttpContext.Current.Session.IsReadOnly 将检查只读会话

    【讨论】:

      【解决方案2】:

      进一步研究,对于上面发布的确切问题,唯一可靠的解决方案似乎是使用反射访问内部 SessionStateBehavior 属性:

      var behavior = (SessionStateBehavior)typeof(HttpContext)
          .GetProperty("SessionStateBehavior", BindingFlags.Instance | BindingFlags.NonPublic)
          .GetValue(HttpContext.Current);
      

      但是,对于检查会话状态是否已禁用的特定情况,在大多数情况下,对HttpContext.Current.Session 进行简单的空检查就足够了。我基于this question 中列出的原因,说明为什么该属性可能为空。

      【讨论】:

        猜你喜欢
        • 2020-10-26
        • 1970-01-01
        • 2019-06-20
        • 2020-03-22
        • 1970-01-01
        • 2017-06-19
        • 2012-08-20
        • 1970-01-01
        • 2011-07-26
        相关资源
        最近更新 更多