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

时间:2015-08-25 16:33:41

标签: c# asp.net-mvc asp.net-mvc-5 wif

Rowan Freeman对this question的回答描述了在控制器的构造函数中User.Identity为空的原因。对同一问题的评论指出System.Web.HttpContext.Current.User确实在同一上下文中产生了预期值。

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

在控制器的构造函数中使用System.Web.HttpContext.Current是否可能导致错误?

编辑以澄清:

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

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

1 个答案:

答案 0 :(得分:0)

  

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

它会引入不合需要的依赖关系,例如,这将阻止您正确地对控制器进行单元测试。

您可以考虑改为覆盖Controller.Initialize来添加自己的初始值