この質問は一部の人には些細なことのように思えるかもしれませんが、私はかなり自分と戦っているのがこのタイプのことであり、.netでの負けた戦いのように見えても、すべてを理解したいのです(とにかく私にとって) )。
だから、私が次のことをすると:
_ using System.Web;
...
ApplicationUser user = System.Web.HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());
_
タイトルのエラーと赤いGetOwinContext()
およびエラーCannot resolve symbol '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()
とエラーCannot resolve symbol 'GetOwinContext()'が生成されます
私がHttpContext
をググると、それは_System.Web
_に由来することがわかります。
それで、問題はなぜ最初の例のように完全な構文を使用できないのかということです。 (ここでも回答数が最も多い投票で言及されています: ASP.NET MVC 5-Identity。現在のApplicationUserを取得する方法 )
[〜#〜] update [〜#〜](重複する質問の回答に対処するため):同じ結論に至る可能性がある質問に対する回答はありますが、これがどのように理解されていないのですか重複した質問です。初心者の観点から考え、.NETであるすべての煙と鏡を分析してみてください。私は.Netのように複雑なことを学ぼうとしたことがなく、さまざまな角度から物事を見る必要があります。
私は実際に_Current,
_の使用に関してその質問と他の質問を見ましたが、どちらも1)(当時)探していた答えであるとは思いませんでした。サムの答えは完璧です。しかし、少なくとも今、私はそれが何を意味するのかを調査することができます...
あなたがSystem.Web.HttpContext
を書いているとき、実際にはクラスを指しています。しかし、コントローラの内部でHttpContext
を書き込んでいるときは、HttpContext
クラスのオブジェクトを返すHttpContext
というプロパティを使用しています。 System.Web.HttpContext.Current
静的プロパティを呼び出して、同じオブジェクトに到達することもできます。したがって、次のように書くことができます。
System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
プロジェクトのNuGetパッケージマネージャーに移動し、この_Microsoft.Owin.Host.SystemWeb
_を検索してインストールすると、_using System.Web;
_を使用してGetOwinContext()
メソッドを有効にできます
このリンクのDSRの答えは私のために働きました
'Microsoft.Owin.Host.SystemWeb'というNuGetパッケージが不足しているようです。このパッケージをNuGetからインストールするか、パッケージマネージャーコンソールを使用して、このパッケージをインストールします。
インストールパッケージMicrosoft.Owin.Host.SystemWeb
お役に立てれば。
私の場合、_Microsoft.Owin.Host.SystemWeb
_から_NugetpackageManager.
_を追加したときに機能します。HttpContext
に拡張メソッドGetOwinContext()
を提供します。