Sono di fronte a un problema con il contesto di oggetto EF4 che memorizzo all'interno di HttpContext.Current.Items e quindi desidero disporre non appena la richiesta viene gestita completamente.contesto oggetto di eliminazione su application_endrequest
Su evento Aplication_EndRequest chiamo il metodo Terminate() della RepositoryContext, che troverebbe l'attiva ObjectContext dalla collezione HttpContext.Current.Items, e chiamare Close() sulla sua connessione e Dispose() su di esso.
Il problema è che a volte ho un comportamento strano su una delle mie pagine. In alcune occasioni ho un errore che dice:
L'istanza ObjectContext è stato eliminato e non può più essere utilizzata per le operazioni che richiedono una connessione
ho pensato che forse questo potrebbe accadere in quanto non solo pagina le richieste chiamano l'evento Application_EndRequest una volta che finiscono ma anche le richieste di immagine ed ecc ', e quindi forse a volte altre richieste eliminano l'ObjectContext della richiesta della pagina principale prima di completare il suo lavoro, ma ciò non dovrebbe accadere poiché tutto è fatto sulla collezione HttpContext .Current.Items che non è ovviamente condiviso tra le richieste HTTP .
Inoltre, a causa della ricerca, potrebbe essere causato dal caricamento lento di alcune richieste di database, ma questo non dovrebbe essere il caso qui perché non chiamo Dispose in nessun altro codice (ho controllato) e quindi Dispose() sul EndRequest dovrebbe essere chiamato solo quando è terminato tutto,, non dovrebbe?
Qualche idea su cosa potrebbe causare questo? Come posso testarlo? che cosa suggeriresti?
Grazie!
Che aspetto ha la traccia dello stack quando si riceve questo errore? – AakashM
Puoi pubblicare il codice della tua classe RepositoryContext? –
ecco la traccia: http://img850.imageshack.us/img850/3210/erroryourate.jpg sembra che sia perché nel mezzo dell'operazione il contesto dell'oggetto viene eliminato. Ma ancora non capisco come possa accadere, se dispongo solo di Application_EndRequest. – Sagi