Ответ 1
Да, они обычно будут одинаковыми. Однако, если вы работаете с дополнительными потоками, их не будет; System.Web.HttpContext.Current
является threadstatic.
Я работаю над приложением MVC ASP.NET. Я относительно новичок в обоих.
В контроллере я пытаюсь получить текущий журнал пользователя, для которого, кажется, есть два способа сделать это:
System.Web.HttpContext.Current.User.Identity.Name
или
HttpContext.User.Identity.Name
В чем разница между ними? Насколько я могу сказать в рамках MVC, контроллер имеет текущий HttpContext, хранящийся как свойство, поэтому эти методы идентичны. Это правильно?
Да, они обычно будут одинаковыми. Однако, если вы работаете с дополнительными потоками, их не будет; System.Web.HttpContext.Current
является threadstatic.
Контекст, предоставляемый контроллером (не статическим HttpContext.Current), является макетным. Если вы заинтересованы в модульном тестировании своего кода, гораздо проще создать макет ControllerContext и установить его на контроллере, чем пройти через HttpContext.Current. В противном случае ControllerContext.HttpContext указывает на те же данные, что и HttpContext.Current.