Respuesta corta
Su grupo de aplicaciones o sitio web está siendo apagado demasiado pronto. Extienda el tiempo de inactividad en el sitio, amplíe la vida útil del grupo de aplicaciones para el grupo que ejecuta el sitio. Aumente la asignación de memoria y solicite límites.
respuesta completa
Si desea saber cuándo y por qué algo se va a quitar de la caché, tienes que entrar la eliminación elemento utilizando la opción CacheItemRemovedCallback en la inserción ... A continuación, puede iniciar sesión utilizando la razón el argumento CacheItemRemovedReason.De este modo puede registrar la razón como uno de los cuatro motivos enumerados:
- Eliminado El elemento se elimina de la memoria caché por una llamada de método Remove o por una llamada a un método de inserción que especifica la misma clave.
- caducado El elemento se elimina de la caché porque expiró.
- Underused El elemento se elimina de la memoria caché porque el sistema lo eliminó para liberar memoria.
- DependencyChanged El elemento se elimina de la memoria caché porque la dependencia de la caché asociada a ella cambió.
Normalmente, encontrará Expirado y Subutilizado los motivos de las cosas que no tienen explicto Eliminar las llamadas realizadas en la memoria caché y no tienen dependencias.
Es probable que descubras, mientras trazas estas cosas divertidas, que tus artículos no están vencidos ni subutilizados. Más bien, sospecho que encontrará que el AppDomain se está descargando.
Una forma en que esto puede suceder debido a que los archivos web.config (o el directorio bin, o .aspx, etc.) se modifican. Para obtener más información sobre cuándo ocurre esto, consulte la sección Reinicios de la aplicación de this page. Cuando eso ocurre, las solicitudes actualmente pendientes se agotan, el caché se vacía y el AppDomain se descarga. Puede detectar esta situación marcando AppDomain.IsFinalizingForUnload y registrando durante la devolución de llamada.
Otra razón para reciclar AppDomain es cuando IIS decide reciclar la AppPool por alguna de las razones por las que se ha configurado. Ejemplos de que se xxx memoria ha sido asignado durante la vida útil, yyy segundos de tiempo de ejecución para la AppPool, ttt programado tiempo de reciclado, o iiii tiempo de inactividad (no hay peticiones de entrada). Para obtener más información, consulte this article for IIS6 o this article for IIS7
¿Cómo verifica que se ha eliminado? –
@ J.W. : Caché [CacheName] será nulo si la entrada ha sido eliminada/expirada. – RickNZ