C# 如何获取请求的SessionStateBehavior?

C# 如何获取请求的SessionStateBehavior?,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我知道,SessionState属性可用于设置对特定MVC控制器的请求的sessionstatebhavior。我的问题是,如何通过编程确定当前请求的会话状态行为?我看到HttpContext有一个问题,但是有什么方法可以公开讨论这个问题吗 特别是,我想知道会话状态行为是否被禁用。进一步研究,似乎唯一可靠的解决上述问题的方法是使用反射访问内部sessionstatebhavior属性: var behavior = (SessionStateBehavior)typeof(HttpContext

我知道,
SessionState
属性可用于设置对特定MVC控制器的请求的
sessionstatebhavior
。我的问题是,如何通过编程确定当前请求的
会话状态行为
?我看到
HttpContext
有一个问题,但是有什么方法可以公开讨论这个问题吗


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

进一步研究,似乎唯一可靠的解决上述问题的方法是使用反射访问内部
sessionstatebhavior
属性:

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

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

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