Hola,

Para comprobar si la clave ya existe en la caché que shoulde ser capaz de hacer lo siguiente :

if(Cache["MyKey"] != null)

Esto, sin embargo, no trabajo? Si puedo crear una instancia de la clase Cache voy a ser capaz de obtener el objeto de esta manera :

cache.Get("MyKey") or cache["MyKey"]

Pero incluso si puedo comprobar el valor null como este :

if(cache["MyKey"] != null)

Generará una NullRefException?

¿Qué estoy haciendo mal?

Edit1 :

Esta es la forma en que me instansiate la caché

private Cache cache
        {
            get {
                if (_cache == null)
                    _cache = new Cache();
                return _cache; }
        }
¿Cómo son instancias de la instancia de Caché? Es isnot su clave de lanzar la NRE, es la caché de objeto en sí mismo
Ruegos ver Edit1.

OriginalEl autor Banshee | 2011-02-01

2 Comentarios

  1. 28

    De cheques por un valor null es cómo comprobar si un objeto de una determinada clave está en la Caché. Por lo tanto,

    if(Cache["MyKey"] != null)
    

    es correcta.

    Sin embargo, usted no debe instanciar un nuevo objeto de Caché. Usted puede utilizar System.Web.HttpContext.Current.Cache lugar. Este es el ejemplo de la Caché y vive en el dominio de la aplicación.

    De MSDN:

    Una instancia de esta clase se crea
    por dominio de aplicación, y se queda
    válida siempre que la aplicación
    dominio permanece activa. Información
    sobre una instancia de esta clase es
    disponible a través de la propiedad de la Caché
    del objeto HttpContext o la Caché
    propiedad de la Página de objeto.

    Gracias, me perdí.
    El problema es cuando un objeto en caché en realidad es nulo, y especialmente en la consulta para intentar obtener los datos de nuevo es caro.

    OriginalEl autor marapet

  2. 0

    Usted debe comprobar si la caché no es Null & post que comprobar si la clave existe o no (por el uso .Contiene el método).

    if (myCache != null && myCache.Contains("keyName") && myCache.Get("keyName") != null)
            {
                myDS = (DataSet)myCache.Get("keyName");
            }
    

    OriginalEl autor Biki

Dejar respuesta

Please enter your comment!
Please enter your name here