Estoy tratando de determinar si un Session variable existe, pero me da el error:

Sistema.NullReferenceException: referencia a Objeto no establecida como instancia de un objeto.

Código:

    //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";
    }

Que es porque el Session nombre «company_path» no existe, pero yo no se puede detectar!

OriginalEl autor Luke | 2012-10-19

3 Comentarios

  1. 25

    No utilice ToString() si desea comprobar si la Sesión[«company_path»] es nulo. Como if Session["company_path"] is null then Session["company_path"].ToString() will give you exception.

    Cambio

    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";
    }

    A

    if (System.Web.HttpContext.Current.Session["company_path"]!= null)
    {
          company_path = System.Web.HttpContext.Current.Session["company_path"].ToString();
    }
    else
    {
          company_path = "/reflex/SMD";
    }
    Gracias por la respuesta, voy a poner el mismo error a pesar de que con
    Comprobar si el subproceso actual puede acceder al Sistema.Web.HttpContext?
    ¿Cómo puedo comprobar eso? He using System.Web? Esto es correcto?
    Es su aspx página de código subyacente o alguna clase en su biblioteca?
    Es una clase en mi carpeta App_Code. Hay una manera especial que tengo para dar acceso? Quiero evitar tener que pasar la variable en mi constructor. Gracias 🙂

    OriginalEl autor Adil

  2. 0

    Si se despliega en Azure (a partir de agosto de 2017), es útil también para comprobar si las claves de Sesión de la matriz se rellena, por ejemplo:

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

    OriginalEl autor Manish

  3. 0

    Esto puede ser resuelto como un forro en la última versión de .NET usando un null-condicional ?. y un valor null a juntarse ??:

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

    Enlaces:

    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

    OriginalEl autor Luke

Dejar respuesta

Please enter your comment!
Please enter your name here