我正在研究MVC ASP .NET应用程序.我对两者都比较新.
在控制器中,我试图获取当前登录用户,为此似乎有两种方法:
System.Web.HttpContext.Current.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
要么
HttpContext.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
这些有什么区别?据我所知,在MVC框架中,控制器将当前的HttpContext存储为属性,因此这些方法是相同的.那是对的吗?
Luc*_*ero 90
是的,它们通常是相同的.但是,如果你正在使用其他线程,它们将不会; System.Web.HttpContext.Current是线程的.
Lev*_*evi 25
控制器提供的上下文(不是静态HttpContext.Current)是可模拟的.如果您对单元测试代码感兴趣,那么创建一个模拟ControllerContext并在Controller上设置它比通过HttpContext.Current要容易得多.否则,ControllerContext.HttpContext指向与HttpContext.Current相同的数据.
| 归档时间: |
|
| 查看次数: |
59223 次 |
| 最近记录: |