我已经下载,并成功运行ASP。NET Identity示例: https://github.com/rustd/AspnetIdentitySample

我现在正在实现ASP。NET身份框架在我的项目中遇到了一个问题,这让我抓狂了一整天…

getowwincontext()在我的HttpContext上不存在作为扩展方法

我正在类库中实现身份框架。我已经安装了所有最新的(预发布版)Identity框架,除了这个,其他的一切都很好。

我已经尝试在我的控制器中实现与相同的直接相同的代码,并发现相同的问题。

我显然在某个地方遗漏了一个参考,虽然我不知道是什么..

让我抓狂的代码块是:

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;

... 这让我抓狂....任何想法?

更新

我已经检查了样例中的Identity和OWIN版本,并确保在解决方案中有相同的版本。

更重要的是,如果我在样本上的对象浏览器中搜索getowwincontext,我可以找到方法,但是当我在解决方案中搜索它时,它无处可寻……我一定是有什么过期的图书馆,但我找不到!


当前回答

啊!

我找到了……我没有额外的软件包,叫做microsoft . owen . host . systemweb

一旦我搜索和安装这个,它工作。

现在-我不确定我是不是错过了一切,虽然发现没有参考这样的库或包时,通过各种教程。当我安装所有的身份框架时,它也没有安装…不知道是不是只有我…

编辑 虽然它在microsoft . owen . host . systemweb程序集中,但它是系统中的扩展方法。Web名称空间,因此您需要对前者有引用,并使用后者。

其他回答

确保您安装了nuget包Microsoft.AspNet.Identity.Owin。然后添加System.Net.Http命名空间。

在API中获取UserManager

return HttpContext.Current.GetOwinContext().GetUserManager<AppUserManager>();

其中AppUserManager是继承自UserManager的类。

只要安装这个包,你的代码就可以工作了:=> 安装软件包Microsoft.Owin.Host.SystemWeb -Version 2.1.0

啊!

我找到了……我没有额外的软件包,叫做microsoft . owen . host . systemweb

一旦我搜索和安装这个,它工作。

现在-我不确定我是不是错过了一切,虽然发现没有参考这样的库或包时,通过各种教程。当我安装所有的身份框架时,它也没有安装…不知道是不是只有我…

编辑 虽然它在microsoft . owen . host . systemweb程序集中,但它是系统中的扩展方法。Web名称空间,因此您需要对前者有引用,并使用后者。

我已经拥有了所有正确的包和用法,但是在让getowwincontext()工作之前必须先进行构建。