繁体   English   中英

检查ASP.NET Core 1.0中的会话

[英]Check for session in ASP.NET Core 1.0

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

如何根据配置检测会话是否可用。

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

我认为最安全,最高效的方法是使用请求功能 例如,以下是获取会话的简单扩展方法;如果未启用,则为null:

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

来自MVC控制器的示例用法:

var session = this.HttpContext.SafeSession();

但是,可以采取一些有问题的解决方法来让您继续工作,直到找到更好的解决方案为止。

public class Startup
{
    public static bool IsSessionAvailable { get; set; }
    //...

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        IsSessionAvailable = false; // session not available

    //...

然后在您的控制器中。

if (Startup.IsSessionAvailable)
{
    HttpContext.Session.Clear();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM