ASP.NET身份 – HttpContext没有GetOwinContext的扩展方法
我已经下载并成功运行了以下的ASP.NET身份示例: https : //github.com/rustd/AspnetIdentitySample
我现在正在实施我的项目中的ASP.NET身份框架的中间,并遇到了一个问题,这一直使我疯狂的一整天…
GetOwinContext()
不作为我的HttpContext
上的扩展方法存在
我正在实现类库中的身份框架。 我已经安装了Identity框架的所有最新版本(预发行版本),除此之外,所有的工作都正常。
我已经尝试在我的控制器中执行相同的代码,并find相同的问题。
我明显错过了某处的参考,虽然我不知道是什么..!
正在杀死我的代码块是:
private IAuthenticationManager AuthenticationManager { get { return HttpContext.GetOwinContext().Authentication; } }
我已经添加了以下引用 – 在我的类库中也尝试过这些,并直接在控制器上,他们都没有为我工作…
using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Owin.Security; using Microsoft.Owin; using System.Web;
…这是把我推上墙……任何想法?
UPDATE
我已经在示例中检查了Identity&OWIN的版本,并且确保我的解决scheme中具有相同的版本。
更重要的是,如果我searchGetOwinContext
的示例上的对象浏览器,我可以find该方法,但是当我在我的解决scheme中search它时,无处可寻…我必须有一些库过时,但我可以找不到!
哎呀!
我发现它 …我没有一个额外的包,叫做Microsoft.Owin.Host.SystemWeb
一旦我search和安装这个,它的工作。
现在 – 我不确定我是否错过了所有的东西,虽然在阅读各种教程时发现没有提及这样的库或包。 它也没有得到安装时,我安装了所有这个身份框架…不知道是否只是我..
编辑尽pipe它在Microsoft.Owin.Host.SystemWeb
程序集中,它是System.Web
命名空间中的一个扩展方法,因此您需要引用前者,并using
后者。
我相信你需要引用当前的HttpContext
如果你在控制器之外。 MVC控制器具有对当前上下文的基本引用。 但是,除此之外,你必须明确声明你想要的是当前的HttpContext
return HttpContext.Current.GetOwinContext().Authentication;
至于它没有显示出来,使用上面显示的代码( IAuthenticationManager
)的新MVC 5项目模板在帐户控制器的顶部有以下使用语句:
using System.Threading.Tasks; using System.Web; using System.Web.Mvc; using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Owin.Security; using WebApplication2.Models;
注释掉每一个,看来GetOwinContext()
实际上是System.Web.Mvc程序集的一部分。
经过反复试验,比较了我的控制器和Asp.Net模板控制器的使用语句
using System.Web;
为我解决了这个问题。 您还需要添加:
using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.Owin;
使用GetUserManager方法。
微软无法find一种方法来自动解决这个问题,右键点击并解决像其他缺less使用语句?
在我的情况下通过nuget添加Microsoft.AspNet.WebApi.Owin refference有一个窍门。
确保你安装了nuget包Microsoft.AspNet.Identity.Owin
。 然后添加System.Net.Http
命名空间。
我有所有正确的软件包和使用,但必须先build立,才能使GetOwinContext()工作。
在API中获取UserManager
return HttpContext.Current.GetOwinContext().GetUserManager<AppUserManager>();
AppUserManager是inheritance自UserManager的类。
- 如何使用SqlConnectionStringBuilder从连接string获取数据库名称
- WebForms UnobtrusiveValidationMode需要一个ScriptResourceMapping作为'jquery'。 请添加一个名为jquery的ScriptResourceMapping(区分大小写)
- Asp.netformsauthentication和多个域
- 我怎样才能手动创build一个身份validationcookie,而不是默认的方法?
- ASP.NET MVC全局variables
- 如何在.NET MVC 2中实现正确的HTTPerror handling?
- 如何在ASP.NET中返回XML?
- 如何在debuggingASP.NET应用程序时在Fiddler中显示本地主机stream量?
- Elmah不能使用asp.net网站