c# - practices - HttpSelfHostServer y HttpContext.Current
web api authentication token example (2)
No podrá utilizar HttpContext en un entorno auto hospedado. HttpContext se establece mediante la canalización de ASP.Net, que no tendrá si no se ejecuta bajo IIS / ASP.Net.
HttpContext solo está disponible en el modo de alojamiento web, en el que HttpControllerHandler crea la solicitud.
Para tu información, te invito a leer los siguientes artículos de Pedro Félix para comprender mejor los diferentes modelos de alojamiento:
Estoy trabajando en una aplicación web api de ASP.NET. Todo funciona bien, pero ahora estoy luchando con HttpContext
:
Necesito guardar información de sesión del cliente. Pero HttpContext.Current
siempre es nulo. Así que es obvio que mi HttpSelfHostServer
no funciona con la clase estática HttpContext.
Lo que no entiendo es: ¿por qué ..? Y no puedo encontrar una manera de decirle a HtttpSelfHostServer
ni a HttpSelfHostConfiguration
que trabajen con HttpContext
.
Esto es lo que estoy haciendo:
Creando una
HttpSelfHostConfiguration
- 1.1 Adición
Service-Resolvers
yRoutes
- 1.2 Adición de nombre de
UserNamePassword-Validator
personalizadoUserNamePassword-Validator
- 1.1 Adición
crear una nueva instancia de HttpSelfHostServer con la configuración
- 2.1
server.OpenAsync().Wait()
- 2.1
Cualquier ayuda sobre cómo puedo decirle a mi servidor que trabaje con HttpContext.Current
es muy apreciada. ¡Aclamaciones!
Para solucionar este problema (me parece que estoy usando muchos componentes en estos días que necesitan funcionar igual de bien en Web API y MVC), puede probar este shim antiguo que escribí para devolverle una interfaz similar a HttpContext que funciona en Ambos sabores. También está en NuGet, aquí está la fuente: Enlace en github (o Enlace en Nuget )