为什么System.Web.HttpContext.Current.User会在控制器构造函数中解析,而User. ne
本文关键字:User ne 构造函数 Web System HttpContext Current 为什么 控制器 | 更新日期: 2023-09-27 18:09:42
Rowan Freeman对这个问题的回答描述了为什么User.Identity
在控制器的构造函数期间为空。对同一问题的评论指出,在相同的上下文中,System.Web.HttpContext.Current.User
确实会产生期望的值。
为什么System.Web.HttpContext.Current.User
在控制器的构造器期间有效,即使User.Identity
不是?
在控制器的构造函数中使用System.Web.HttpContext.Current
可能会导致bug吗?
编辑澄清:
从链接的文章中,关于User.Identity
:"控制器实例化将在授权发生之前发生。即使你的MVC应用程序调用RenderAction()几次,你最终创建了五个不同的控制器,这五个控制器将在任何OnAuthorization发生之前创建。"
上述段落不适用于System.Web.HttpContext.Current
吗?我希望能够更好地理解两者之间的细微差别,使他们表现得不同,希望了解System.Web.HttpContext.Current
是否可以接受在个人动作之外使用,但在控制器内部。
在控制器的构造函数中使用System.Web.HttpContext.Current可能会导致bug吗?
它将引入一个不希望的依赖,例如,它将阻止您正确地对控制器进行单元测试。
您可以考虑重写Controller.Initialize
来添加您自己的initializ