检查 ASP.NET Core 1.0 中的会话

Max*_*xim 2 c# session asp.net-core

访问上下文的 Session 属性会引发异常,因为未配置会话。

如何检测会话是否可用(如果它可以根据配置打开或关闭)。

换句话说,我不能这样做:context.Session?.Clear();

Dav*_*idG 5

我认为最安全、最高效的方法是使用请求功能。例如,这是一个简单的扩展方法,用于获取会话或 null(如果未启用):

public static ISession SafeSession(this HttpContext httpContext)
{
    var sessionFeature = httpContext.Features.Get<ISessionFeature>();
    return sessionFeature == null ? null : httpContext.Session;
}
Run Code Online (Sandbox Code Playgroud)

MVC 控制器的用法示例:

var session = this.HttpContext.SafeSession();
Run Code Online (Sandbox Code Playgroud)