Подтвердить что ты не робот

Почему HttpContext не получается из HttpContextBase?

У обоих есть свойства Request and Response, но я не могу написать метод, который принимает либо HttpContext, либо HttpContextBase. В некоторых местах доступен один или другой, поэтому мне нужно обрабатывать оба. Я знаю, что HttpContextWrapper может конвертировать в одном направлении, но все же... почему это так?

4b9b3361

Ответ 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, Я буду исследовать, как получить контекст и обновить этот пост.