Risposta breve
vostro pool di applicazioni o sito è attualmente in arresto troppo presto. Estendere il timeout di inattività sul sito, estendere la durata del pool di applicazioni per il pool che esegue il sito. Aumentare l'allocazione di memoria e i limiti di richiesta.
risposta completa
Se vuoi sapere quando e perché qualcosa è stato rimosso dalla cache, è necessario accedere alla rimozione voce utilizzando l'opzione CacheItemRemovedCallback sull'inserimento ... Quindi è possibile accedere utilizzando la ragione l'argomento CacheItemRemovedReason.È possibile quindi accedere alla ragione come uno dei quattro motivi elencati:
- Rimosso L'elemento viene rimosso dalla cache da una chiamata metodo Remove o con un metodo chiamata Insert che ha specificato la stessa chiave.
- Scaduto L'elemento viene rimosso dalla cache perché è scaduto.
- Sottoutilizzato L'elemento viene rimosso dalla cache perché il sistema lo ha rimosso per liberare memoria.
- DependencyChanged L'elemento viene rimosso dalla cache perché la dipendenza della cache associata è cambiata.
In genere, i motivi per cose che non hanno esplicito sono Scaduti e Sottoutilizzati. Rimuovi le chiamate effettuate sulla cache e non hanno dipendenze.
Probabilmente scoprirai, mentre ripercorrerai queste cose divertenti, che i tuoi articoli non sono scaduti o sottoutilizzati. Piuttosto, sospetto che scoprirai che AppDomain si sta scaricando.
Un modo in cui ciò può accadere a causa del cambio dei file web.config (o directory bin, o .aspx, ecc.). Per ulteriori informazioni su quando ciò si verifica, vedere la sezione Riavvia di this page. Quando ciò accade, le richieste attualmente in sospeso vengono prosciugate, la cache svuotata e AppDomain scaricato. È possibile rilevare questa situazione controllando lo AppDomain.IsFinalizingForUnload e registrando ciò durante la richiamata.
Un altro motivo per il riciclo di AppDomain è quando IIS decide di riciclare l'AppPool per uno dei motivi per cui è stato configurato. Esempi di che sono xxx memoria è stata allocata nel corso della vita, yyy secondi di autonomia per AppPool, TTT previsto tempo di riciclo o iiii tempo di inattività (nessun richieste in ingresso). Per ulteriori dettagli, verificare this article for IIS6 o this article for IIS7
Come si verifica che sia stato eliminato? –
@ J.W. : Cache [CacheName] sarà null se la voce è stata rimossa/scaduta. – RickNZ