访问上下文的Session属性会引发异常,因为未配置会话。
如果可以根据配置打开或关闭会话,如何检测会话是否可用。
换句话说,我不能这样做:<base href="/another-folder">
答案 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();
}