訪問上下文的Session屬性會引發異常,因爲會話未配置。在ASP.NET Core 1.0中檢查會話
如何檢測會話是否可用,如果它可以打開或關閉取決於配置。
換句話說,我不能做到這一點:context.Session?.Clear();
訪問上下文的Session屬性會引發異常,因爲會話未配置。在ASP.NET Core 1.0中檢查會話
如何檢測會話是否可用,如果它可以打開或關閉取決於配置。
換句話說,我不能做到這一點:context.Session?.Clear();
我認爲最安全和最高效的方式是使用request features。例如,這裏有一個簡單的擴展方法來獲取會話或空,如果它未啓用:從MVC控制器
public static ISession SafeSession(this HttpContext httpContext)
{
var sessionFeature = httpContext.Features.Get<ISessionFeature>();
return sessionFeature == null ? null : httpContext.Session;
}
用法示例:
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();
}
你沒有運行'services.UseSession()'基於配置? – DavidG
我假設你試圖建議直接從配置中獲取它..老實說,配置不是我真正擁有的東西......我只是說配置來解釋會話是可選的......實際上原因有點兒不同的...會話可以稍後使用..但代碼應該現在已經考慮它。 – Maxim