我正在开发一个MVC ASP .NET应用程序。我对这两者都比较新。
在控制器中我试图获取当前登录用户,为此似乎有两种方法:
System.Web.HttpContext.Current.User.Identity.Name
或者
HttpContext.User.Identity.Name
这些有什么区别?据我所知,在MVC框架中,控制器将当前的HttpContext存储为属性,因此这些方法是相同的。这是对的吗?
答案 0 :(得分:88)
是的,它们通常是相同的。但是,如果你正在使用其他线程,它们将不会; System.Web.HttpContext.Current
是疯狂的。
答案 1 :(得分:24)
控制器提供的上下文(不是静态HttpContext.Current)是可模拟的。如果您对单元测试代码感兴趣,那么创建一个模拟ControllerContext并在Controller上设置它比通过HttpContext.Current要容易得多。否则,ControllerContext.HttpContext指向与HttpContext.Current相同的数据。