![](/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.