2010-05-04 18 views

Respuesta

18

HttpContext.Current está disponible para todos páginas, pero no necesariamente para todos los hilos. Si intenta usarlo dentro de un hilo de fondo, delegado ThreadPool, llamada asincrónica (usando una página Async ASP.NET), etc., terminará con un NullReferenceException.

Si necesita obtener acceso a la memoria caché de las clases de la biblioteca, es decir, las clases que no tienen conocimiento de la solicitud actual, debe utilizar HttpRuntime.Cache en su lugar. Esto es más confiable porque no depende de un HttpContext.

+0

@Aaronnaught - No estoy seguro de cómo hay una diferencia más allá del acceso a HttpContext.Current desde HttpContext.Current.Cache devuelve HttpRuntime.Cache. – Thomas

+0

@Aaronnaught - Supongo que estás diciendo que no tienes que depender de HttpContext. ¿De verdad es esa ventaja? – Thomas

+0

+1, HttpContext.Current debe usarse con cuidado. – kervin

4

HttpContext.Current.Cache estará presente, pero Current solo se debe utilizar si no puede acceder a su miembro de contexto.

También para responder a su segunda pregunta, sí, el objeto Caché es global para la aplicación.

Aquí es una buena introducción a la memoria caché ...

How to cache in ASP.NET by using Visual C# .NET

y ...

Caching with ASP.NET. No omita la parte 2, "Caché de datos"

+7

4GuysFromRolla - wow eso es una explosión del pasado :-). ¿Realmente no ha habido cambios en el almacenamiento en caché en ASP.Net desde 2002? – nashwan

Cuestiones relacionadas