2009-12-29 7 views
16

Ambos tienen propiedades de Solicitud y Respuesta, pero no puedo escribir un método que tome HttpContext o HttpContextBase. En algunos lugares, ya sea uno u otro está disponible, así que necesito manejar ambos. Sé que HttpContextWrapper puede convertir en una dirección, pero aún así ... ¿por qué es así?¿Por qué HttpContext no se deriva de HttpContextBase?

+5

Vine aquí para descubrir cómo convertir un 'HttpContextBase' a' HttpContext'. Tu pregunta contenía la respuesta. La respuesta es 'HttpContextWrapper' que se deriva de' HttpContextBase' y toma 'HttpContext' como parámetro para el constructor. Como su nombre lo indica, envuelve un 'HttpContext' y lo hace disponible como un objeto compatible con 'HttpContextBase'. ¡Gracias! –

+0

http://stackoverflow.com/a/4567707/955831 –

Respuesta

23

HttpContext ha estado presente desde .NET 1.0. Debido a razones de compatibilidad con versiones anteriores, no pueden cambiar esa clase. HttpContextBase se introdujo en ASP.NET MVC para permitir una mejor comprobabilidad, ya que hace que sea más fácil simularlo.

0

Esta es una vieja pregunta, pero acabo de tener el mismo problema y la respuesta está en el comentario de Gunder.

crearle métodos a utilizar HttpContectBase y luego envolver su contexto en un HttpContextWrapper cuando se desea llamar desde el código

public class SomeClass{ 
    ... other stuff in your class 
public void MyMethod(HttpContextBase contextbase){ 
    ...all your other code 
    } 
} 

Uso

var objSomeClass = new SomeClass(); 
objSomeClass.MyMethod(new HttpContextWrapper(HttpContext.Current)); 

Creo que habrá HttpContext.Current null si realiza esta llamada a través de ajax, Investigaré cómo obtener el contexto y actualizar esta publicación.

+0

Creo que todavía debe tener un HttpContext incluso con llamadas Ajax – JoelFan

Cuestiones relacionadas