Разница между HttpContext.Current и Controller.Context в MVC ASP.NET - PullRequest
70 голосов
/ 24 апреля 2009

Я работаю над приложением MVC ASP .NET. Я относительно новичок в обоих.

В контроллере я пытаюсь получить текущий логин пользователя, для которого, кажется, есть два способа сделать это:

System.Web.HttpContext.Current.User.Identity.Name

Или

HttpContext.User.Identity.Name

В чем разница между ними? Насколько я могу сказать, в рамках MVC контроллер имеет текущий HttpContext, хранящийся как свойство, поэтому эти методы идентичны. Это правильно?

Ответы [ 2 ]

89 голосов
/ 24 апреля 2009

Да, они обычно будут идентичны. Однако, если вы работаете с дополнительными потоками, они не будут; System.Web.HttpContext.Current является потоковым.

25 голосов
/ 27 апреля 2009

Контекст, предоставляемый контроллером (не статический HttpContext.Current), является поддельным. Если вы заинтересованы в модульном тестировании своего кода, обычно гораздо проще создать фиктивный ControllerContext и установить его на Controller, чем пройти через HttpContext.Current. В противном случае ControllerContext.HttpContext указывает на те же данные, что и HttpContext.Current.

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