web-dev-qa-db-ja.com

'System.Web.HttpContext'には 'GetOwinContext' Mysteryの定義が含まれていません

この質問は一部の人には些細なことのように思えるかもしれませんが、私はかなり自分と戦っているのがこのタイプのことであり、.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)(当時)探していた答えであるとは思いませんでした。サムの答えは完璧です。しかし、少なくとも今、私はそれが何を意味するのかを調査することができます...

14
Sum None

あなたがSystem.Web.HttpContextを書いているとき、実際にはクラスを指しています。しかし、コントローラの内部でHttpContextを書き込んでいるときは、HttpContextクラスのオブジェクトを返すHttpContextというプロパティを使用しています。 System.Web.HttpContext.Current静的プロパティを呼び出して、同じオブジェクトに到達することもできます。したがって、次のように書くことができます。

System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
27

プロジェクトのNuGetパッケージマネージャーに移動し、この_Microsoft.Owin.Host.SystemWeb_を検索してインストールすると、_using System.Web;_を使用してGetOwinContext()メソッドを有効にできます

11
Spynol

このリンクのDSRの答えは私のために働きました

メール検証のためのMVC 5 IDでの作業

'Microsoft.Owin.Host.SystemWeb'というNuGetパッケージが不足しているようです。このパッケージをNuGetからインストールするか、パッケージマネージャーコンソールを使用して、このパッケージをインストールします。

インストールパッケージMicrosoft.Owin.Host.SystemWeb

お役に立てれば。

私の場合、_Microsoft.Owin.Host.SystemWeb_から_NugetpackageManager._を追加したときに機能します。HttpContextに拡張メソッドGetOwinContext()を提供します。

3
Gobind Gupta