为什么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.User会在控制器构造函数中解析,而User. ne

在控制器的构造函数中使用System.Web.HttpContext.Current可能会导致bug吗?

它将引入一个不希望的依赖,例如,它将阻止您正确地对控制器进行单元测试。

您可以考虑重写Controller.Initialize来添加您自己的initializ