HttpContext.Current is null

28 views
Skip to first unread message

Edgar Ramos

unread,
Feb 23, 2015, 4:31:41 PM2/23/15
to altnet-...@googlegroups.com
Gente un saludo, estoy intentando testear una app webapi que utiliza owin para la parte de autenticacion.
Estoy haciedo uso de Castle.Windsor par IoC/ID, en uno de mis installer, especificamente en NHibernateInstaller (registra los componentes a utilizarse con nhibernate), tengo la siguiente instruccion

 HttpContext.Current.Application[SessionFactoryProvider.Key]
                            = container.Resolve<ISessionFactoryProvider>();

Obviamente todo esto se encuentra en un ensamblado denominado Bootstrapper, indirectamente este ensamblado, sirve al proyecto web api, que al ejecutarse este lo hace sin problemas.

El problema se da cuando desde mi assemblie de test, en el siguiente codigo

public ApiTestApp()
        {
            this.server = TestServer.Create(app =>
            {
                var startup = new Startup();
                startup.ConfigureOAuth(app);

                var config = new HttpConfiguration();
                WebApiConfig.Register(config); 

                app.UseWebApi(config);

            });
        }

Esta linea WebApiConfig.Register(config); internamente hace uso de boostrapper, pero para entonces en runtime esta linea HttpContext.Current es null, y el test falle porsupuesto

Al parecer HttpContext.Current solo funciona dentro de asp net.

Alguna sugerencia?

Muchas gracias

--
Saludos
Edgar

Carlos Peix

unread,
Feb 23, 2015, 6:14:38 PM2/23/15
to altnet-hispano
Hola Edgar,

Estoy de vacaciones asi que no tengo posibilidad de mirar mucho código pero si para pasarte este ejemplo. De todas maneras, cuidado que es código bastante viejo.

----------------------------------
Carlos Peix

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a altnet-hispan...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/altnet-hispano.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Edgar Ramos

unread,
Feb 24, 2015, 8:07:18 AM2/24/15
to altnet-...@googlegroups.com
Gracias Carlos, lo estoy revisando este momento
--
Saludos
Edgar

Edgar Ramos

unread,
Feb 24, 2015, 8:41:51 AM2/24/15
to altnet-...@googlegroups.com
Me he estado guiando para la parte de test de webapi con owin con la info de este link 


La linea 23 [WebApiConfig.Register(config);], al momento de testear funciona bien. He agregado el manejo de IoC/ID (Windsor) en un ensamblado separado, este es utilizado por WebApiConfig.Register, esta integracion funciona bien excepto por la siguiente linea, ubicada en uno de mis installers

HttpContext.Current.Application[SessionFactoryProvider.Key]
                            = container.Resolve<ISessionFactoryProvider>();


En la parte de test HttpContext.Current llega como null, leyendo informacion al respecto


veo que al parecer lo que me sucede es que HttpContext.Current no se maneja bienn fuera del ambiente asp.net, alguna sugerencia de como solucionar este problema?

Muchas gracias
--
Saludos
Edgar

Juan María Hernández

unread,
Feb 25, 2015, 4:23:12 AM2/25/15
to altnet-...@googlegroups.com
Hola Edgar,

¿Por qué necesitas guardar el ISessionFactoryProvider en el HttpContext? ¿No puedes inyectarlo directamente en las clases que lo necesiten a través de Castle.Windsor?

Si no puedes inyectarlo por algún motivo, una solución es utilizar algún tipo de clase global estática (o singleton) que te permita acceder a él. Es una solución muy fea, pero en el fondo no dista mucho de lo que ya estás haciendo con el Application[SessionFactoryProvider.Key]


Un saludo,

Juanma

Edgar Ramos

unread,
Feb 25, 2015, 8:33:21 AM2/25/15
to altnet-...@googlegroups.com
He estado utilizando el siguiente esquema para el manejo de la session de nh, 


Debido a que lo primero en ejecutarse en mi proyecto es la clase startup de owin para la generacion del token (y temas de autenticacion tambien), en este punto me es necesario tener ya una instancia de SessionFactory y de otros frameworks que estoy usando tales como RhinoSecutiry.
Aqui no me sirve un actionfilter para la manejar la session de nh, no vi otra manera de hacerlo, pero es bastante probable que este equivocado, alguna sugerencia?

Lei este articulo, todavia no lo he puesto a trabajar, si alguien tiene conocimiento me viene bien sus comentarios


Aqui sugiere lo siguiente 
  • By generating the ASP.NET unit test from an ASP.NET project. This is the most common scenario.

Nuevamente cualquier sugerencia es bienvenida

Carlos Admirador

unread,
Aug 30, 2022, 11:07:39 AMAug 30
to AltNet-Hispano

Válido para NET 5 y NET 6?
Reply all
Reply to author
Forward
0 new messages