![](/img/trans.png)
[英]Why does System.Web.HttpContext.Current.User.Identity.Name return an empty string?
[英]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.