This article has been localized into Spanish by the community.
Introducción
De cuenta a los viejos días, dónde PHP y ASP gobernaban el mundo, ¡tratar con cosas como las query string (o cadenas de consulta) pasaba todo el tiempo! Tú tomarías constantemente la entrada de la URL, a través de la query string, y regresar un contenido basado en estos. Mucho ha sido extraído por el framework ASP.NET MVC - por ejemplo, los parámetros de la cadena de consulta son automáticamente convertidos en parámetros de tipo seguro en tus acciones de controlador y la información Se postea de regreso a través de formularios que pueden ser automáticamente convertidos en tus objetos modelo.
Sin embargo, es probable que pronto te encontraras con situaciones en las que necesita ir un poco más de bajo nivel y estar más cerca del Pipeline HTTP. Esto es relevante siempre desees acceder al query string o a la información de FORM directamente, pero también cuando necesites tratar con cosas como cookies/sesiones y encabezados de respuesta. ASP.NET MVC facilita el acceso a todas las funciones relacionadas con HTTP reuniéndola todo en la clase HttpContext.
Accesando al HttpContext
La clase HttpContext puede ser accesada desde todos tus controladores. Por conveniencia, puedes Acceder al HttpContext desde una propiedad encontrada en tus controladores llamada HttpContext. Para aún más conveniencia, algunas de las propiedades encontradas en la clase HttpContext están también expuestas como propiedades en el controlador, por ejemplo la propiedad Request .
Por lo general, no se recomienda tener acceso a HttpContext desde cualquier otro lugar que no sea en tus Controladores. Era fácil de lograr en versiones anteriores del framework ASP.NET MVC, mediante la propiedad HttpContext.Current, pero se quitó en ASP.NET Core, porque básicamente infringe algunos de los principios principales de la arquitectura MVC. Sin embargo, si realmente necesitas hacerlo, por ejemplo, para soportar código heredado, hay maneras de evitarlo - te sugiero que eches un vistazo a este StackOverflow thread para obtener más información.
Estructura HttpContext
Hay MUCHAS propiedades y métodos relacionadas al pipeline HTTP, así que por conveniencia, los miembros de la clase HttpContext han sido separados en varios objetos con los cuales puedes accesar como propiedades en la clase. Aquí hay una lista de los que posiblemente podrás estar usando la mayoría de las veces:
- HttpContext.Request - Todos los miembros relacionados a la solicitud actual, por ejemplo QueryString, Forms y más.
- HttpContext.Response - Todos los miembros relacionados a la respuesta que será entregada, por ejemplo Cookies y encabezados de respuesta.
- HttpContext.Session - Todos los miembros relacionados al tratamiento con la Session (generalmente utilizado para persistir datos entre solicitudes)
- HttpContext.User - Todos los miembros de relacionados al tratamiento con un (potencialmente) usuario autenticado.
En los artículos siguientes, indagaremos más profundo en cada uno de estos objetos y hablaremos sobre la mayoría de las funcionalidades importantes encontradas en ellos.
Resumen
La clase HttpContext permite qué te acerques mucho más al pipeline HTTP y trates con un nivel más bajo cosas por ti mismo, por ejemplo QueryString y Cookies.