[英]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.