“System.Web.HttpContext”不包含“GetOwinContext”之謎的定義
我意識到這個問題對某些人來說可能看起來微不足道,但正是這些類型的事情讓我發現自己有很多問題,我只是想弄清楚這一切,儘管這似乎是 .net 中的一場失敗的戰鬥(無論如何對我來說)。
因此,如果我執行以下操作:
using System.Web; ... ApplicationUser user = System.Web.HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());這會在標題和紅色中產生錯誤,
GetOwinContext()並且錯誤無法解析符號’GetOwinContext()’但是,如果我執行以下操作(
System.Web從 前面刪除HttpContext),它會按預期工作(或至少沒有錯誤):using System.Web; ... ApplicationUser user = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());但是,如果我這樣做(
using System.Web註釋掉的同一行)://using System.Web; ... ApplicationUser user = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());它產生相同的紅色
GetOwinContext()並且錯誤無法解析符號’GetOwinContext()’如果我Google
HttpContext我只能發現它源於System.Web.那麼,問題是為什麼我不能使用上面第一個範例中的完整語法?(這裡的答案中也提到了最高票數:ASP.NET MVC 5 - Identity. How to get current ApplicationUser)
更新(以解決重複的問題回复):雖然該問題的答案可能得出相同的結論,但我真的不明白這是一個重複的問題。嘗試從新手的角度來思考它,並剖析 .Net 的所有煙霧和鏡子。我從來沒有嘗試過像 .Net 那樣在我的生活中學習如此復雜的東西,有時你必須從許多不同的角度來看待事物。
我實際上看到了這個問題和另一個關於使用的問題,
Current,但都沒有讓我覺得 1)是我(當時)正在尋找的答案 2)更重要的是,為什麼它會這樣。山姆的回答是完美的,雖然有點過頭了。但是,至少現在,我可以去研究這一切意味著什麼……
當你
System.Web.HttpContext實際上在寫作時,你是在指向一個類。但是,當您HttpContext在控制器內部編寫時,您使用的是一個名為的屬性,該屬性HttpContext返回該類的一個對象HttpContext。您還可以通過呼叫System.Web.HttpContext.Current靜態屬性來達到相同的對象。因此你可以寫:System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();