'System.Web.HttpContext'不包含'GetOwinContext'Mystery的定义

Sum*_*one 12 asp.net asp.net-mvc visual-studio

我意识到这个问题对某些人来说可能看起来微不足道,但是这些类型的东西让我发现自己很多时候都在战斗,我只是想弄清楚这一切尽管在.net中看起来像是一场失败的战斗(无论如何对我来说) ).

所以,如果我做以下事情:

    using System.Web;
...
ApplicationUser user = System.Web.HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());
Run Code Online (Sandbox Code Playgroud)

这会产生标题中的错误和红色GetOwinContext()和错误无法解析符号'GetOwinContext()'

但是,如果我执行以下操作(System.Web从前面删除HttpContext),它按预期工作(或至少没有错误):

using System.Web;
    ...
    ApplicationUser user = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做(使用using System.Web注释掉的同一行):

    //using System.Web;
            ...
ApplicationUser user = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.User.Identity.GetUserId());
Run Code Online (Sandbox Code Playgroud)

它产生相同的红色GetOwinContext()和错误无法解析符号'GetOwinContext()'

如果我谷歌HttpContext我只能发现它源于System.Web.

所以,问题是为什么我不能像上面第一个例子那样使用完整的语法?(在答案中也提到了最高票数:ASP.NET MVC 5 - Identity.如何获取当前的ApplicationUser)

更新(以解决重复的问题回复):虽然对该问题的答案可能得出相同的结论,但我真的不明白这是一个重复的问题.试着从新手的角度来思考它并解析所有的烟雾和镜子.Net.我从来没有尝试过像生活中那样令人费解的东西.有时你必须从许多不同的角度看问题.

我实际上看到了这个问题以及另一个关于使用的问题Current,但是没有让我感到震惊1)作为我正在寻找的答案(当时)2)更重要的是,为什么它表现得那样.Sam的答案很完美,虽然有点过头了.但是,至少现在,我可以去研究这一切意味着什么......

Sam*_*ari 27

当你在写作时,System.Web.HttpContext你指的是一个班级.但是当你HttpContext在控制器内部编写时,你正在使用一个名为property的属性HttpContext来返回HttpContext该类的对象.您也可以通过调用System.Web.HttpContext.Current静态属性来访问同一个对象.因此你可以写:

System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
Run Code Online (Sandbox Code Playgroud)


小智 9

DSR在这个链接中的答案对我有用

使用MVC 5 Identity进行电子邮件验证

看来你有一个名为'Microsoft.Owin.Host.SystemWeb'的缺少的NuGet包.从NuGet安装此软件包或使用软件包管理器控制台安装所述软件包.

安装包Microsoft.Owin.Host.SystemWeb

希望这可以帮助.


小智 9

只需转到项目的NuGet包管理器,搜索并安装它Microsoft.Owin.Host.SystemWeb,您就可以使用using System.Web;启用GetOwinContext()方法


归档时间:

查看次数:

23126 次

最近记录:

7 年 前