繁体   English   中英

为什么System.Web.HttpContext.Current.User在控制器构造函数期间解析,但User.Identity不能解析

[英]Why does System.Web.HttpContext.Current.User resolve during a controller constructor, but User.Identity does not

罗恩·弗里曼(Rowan Freeman)对这个问题的回答描述了为什么在控制器的构造函数期间User.Identity为null。 对同一问题的评论指出, System.Web.HttpContext.Current.User确实会在同一上下文中产生期望值。

为什么System.Web.HttpContext.Current.User在控制器的构造函数期间有效,即使User.Identity无效?

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

编辑以澄清:

在链接的文章中,关于User.Identity :“控制器实例化将在授权发生之前发生。即使您的MVC应用程序多次调用RenderAction()并最终创建例如五个不同的控制器,也将在创建任何五个控制器之前创建这五个控制器。发生了OnAuthorization。”

上面的段落不适用于System.Web.HttpContext.Current吗? 我希望能更好地理解两者之间的细微差别,使它们表现出不同的行为,以期希望了解System.Web.HttpContext.Current是否可以在单个动作之外但在控制器内部使用。

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

它将引入不良的依赖关系,例如,这将阻止您无法对控制器进行正确的单元测试。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM