检查ASP.NET Core 1.0中的会话

时间:2017-02-20 12:51:43

标签: c# session asp.net-core

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

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

换句话说,我不能这样做:<base href="/another-folder">

2 个答案:

答案 0 :(得分:4)

我认为最安全,最高效的方法是使用request features。例如,这是一个简单的扩展方法来获取会话,如果它没有启用,则为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();

答案 1 :(得分:0)

然而,一个hacky解决方法可能足以让你继续工作,直到找到更好的解决方案。

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();
}