У обоих есть свойства Request and Response, но я не могу написать метод, который принимает либо HttpContext, либо HttpContextBase. В некоторых местах доступен один или другой, поэтому мне нужно обрабатывать оба. Я знаю, что HttpContextWrapper может конвертировать в одном направлении, но все же... почему это так?
Почему HttpContext не получается из HttpContextBase?
Ответ 1
HttpContext
существует с .NET 1.0. Из-за соображений обратной совместимости они не могут изменить этот класс. HttpContextBase
был введен в ASP.NET MVC, чтобы обеспечить лучшую тестируемость, потому что это облегчает издеваться над ним.
Ответ 2
Это старый вопрос, но у меня была такая же проблема, и ответ в комментарии Гундера.
Создайте свои методы для использования HttpContectBase, а затем оберните свой контекст в HttpContextWrapper, когда вы хотите называть его из своего кода
public class SomeClass{
... other stuff in your class
public void MyMethod(HttpContextBase contextbase){
...all your other code
}
}
Использование
var objSomeClass = new SomeClass();
objSomeClass.MyMethod(new HttpContextWrapper(HttpContext.Current));
Я думаю, что HttpContext.Current будет null, если вы сделаете этот вызов через ajax, Я буду исследовать, как получить контекст и обновить этот пост.