Can't detect whether Session variable exists

落花浮王杯 提交于 2019-12-18 20:05:15

问题


I'm trying to determine if a Session variable exists, but I'm getting the error:

System.NullReferenceException: Object reference not set to an instance of an object.

Code:

    // Check if the "company_path" exists in the Session context
    if (System.Web.HttpContext.Current.Session["company_path"].ToString() != null)
    {
        // Session exists, set it
        company_path = System.Web.HttpContext.Current.Session["company_path"].ToString();
    }
    else
    {
        // Session doesn't exist, set it to the default
        company_path = "/reflex/SMD";
    }

That is because the Session name "company_path" doesn't exist, but I can't detect it!


回答1:


Do not use ToString() if you want to check if Session["company_path"] is null. As if Session["company_path"] is null then Session["company_path"].ToString() will give you exception.

Change

if (System.Web.HttpContext.Current.Session["company_path"].ToString() != null)
{
    company_path = System.Web.HttpContext.Current.Session["company_path"].ToString();
}
else
{
    company_path = "/reflex/SMD";
}

To

if (System.Web.HttpContext.Current.Session["company_path"]!= null)
{
      company_path = System.Web.HttpContext.Current.Session["company_path"].ToString();
}
else
{
      company_path = "/reflex/SMD";
}



回答2:


This can be solved as a one liner in the latest version of .NET using a null-conditional ?. and a null-coalesce ??:

// Check if the "company_path" exists in the Session context
company_path = System.Web.HttpContext.Current.Session["company_path"]?.ToString() ?? "/reflex/SMD";

Links:

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-coalescing-operator https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operators




回答3:


If deploying on Azure (as of August 2017), it is useful to also check if the Session keys array is populated, e.g.:

Session.Keys.Count > 0 && Session["company_path"]!= null


来源:https://stackoverflow.com/questions/12971966/cant-detect-whether-session-variable-exists

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!