MVC ASP.NET 中 HttpContext. Current 与 Controller. Context 的区别

我正在开发一个 MVC ASP.NET 应用程序。我对这两方面都比较陌生。

在一个控制器中,我试图获取当前登录用户的日志,对此似乎有两种方法:

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

或者

HttpContext.User.Identity.Name

这两者有什么区别?据我所知,在 MVC 框架中,控制器将当前的 HttpContext 存储为一个属性,因此这些方法是相同的。是这样吗?

61538 次浏览

是的,它们通常是相同的。但是,如果使用其他线程,它们就不会相同; System.Web.HttpContext.Current是线程静态的。

控制器提供的上下文(不是静态 HttpContext)。是可笑的。如果您对单元测试代码感兴趣,那么创建一个模拟 ControllerContext 并在 Controller 上设置它通常比通过 HttpContext 要容易得多。现在。否则 ControllerContext。HttpContext 指向与 HttpContext 相同的数据。现在。