MVC, не «предполагается» использовать HttpContext.Current больше? - PullRequest
9 голосов
/ 03 февраля 2012

Кто-то в сообщении здесь заметил, что не следует использовать HttpContext.Current при использовании MVC, скорее, вы должны использовать ControllerBase.ControllerContext . В некоторых отношениях это имеет смысл, а в других - нет.

Например, ControllerContext - это переменная экземпляра, поэтому везде, где я хочу ссылаться, скажем, на мои переменные Session, мне нужна ссылка на Controller? Почему мы «не должны» использовать HttpContext.Current в MVC, когда вы все еще можете? Есть ли «подходящий» MVC «способ» попасть в мой объект Session, не имея ссылки на контроллер?

Я знаю по тестам, это лучше по причинам, изложенным во многих других местах, но я работаю над проектом, который управляет переменными Session и ссылается на HttpContext.Current, и я хочу знать, есть ли лучший способ получить мой передает объект Session без передачи ссылки на контроллер.

Ответы [ 2 ]

8 голосов
/ 03 февраля 2012

Это в основном потому, что модульное тестирование будет очень сложным, если вы используете HttpContext.Current, поскольку имитация этого значения невозможна при использовании обычных макетов.

HttpContext.Current также делает код более хрупким, поскольку он может бытьзлоупотребляли и злоупотребляли.Например, вы можете использовать его на бизнес-уровне, так как он удобен, но он сломается, если вы решите использовать альтернативный уровень представления, отличный от ASP.NET.

В настоящее время обычно статические методы не одобряются, поскольку их нельзя зависимость впрыском .

1 голос
/ 03 февраля 2012

Ваш единственный пост был из-за Mock-тестирования, где в зависимости от Mock может быть не HttpContext, а только контекст контроллера.В противном случае я использую HttpContext.Current, но не в своих модульных тестах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...