首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET标识- HttpContext没有用于GetOwinContext的扩展方法

ASP.NET标识- HttpContext没有用于GetOwinContext的扩展方法
EN

Stack Overflow用户
提问于 2014-01-16 05:07:14
回答 10查看 175.1K关注 0票数 409

我已经从以下位置下载并成功运行了ASP.NET Identity示例:https://github.com/rustd/AspnetIdentitySample

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

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

GetOwinContext()

我正在类库中实现identity框架。我已经安装了Identity框架的所有最新版本(预发布版本),除了这个之外,一切都运行得很好。

我试着在我的控制器中直接实现相同的代码,发现了同样的问题。

我显然遗漏了某处的引用,尽管我不知道是什么..

最让我抓狂的代码块是:

代码语言:javascript
复制
private IAuthenticationManager AuthenticationManager
{
    get
    {
        return HttpContext.GetOwinContext().Authentication;
    }
}

我已经添加了对下面的引用-在我的类库中尝试了这些,也直接在控制器上尝试了,它们都不适合我……

代码语言:javascript
复制
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Owin.Security;
using Microsoft.Owin;
using System.Web;

..。这让我产生了wall....any的想法?

更新

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

更重要的是,如果我在示例中搜索GetOwinContext的对象浏览器,我可以找到该方法,但是当我在我的解决方案中搜索它时,它却无处可寻……我一定有一些过期的图书馆,但我找不到了!

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2014-01-16 05:32:09

啊!

我找到它了..。我没有额外的软件包,叫做Microsoft.Owin.Host.SystemWeb

一旦我搜索并安装了它,它就工作了。

现在-我不确定我是不是错过了所有的东西,尽管在浏览各种教程时没有找到这样的库或包的引用。当我安装所有的身份框架时,它也没有被安装...不知道是不是只有我..

编辑虽然它在Microsoft.Owin.Host.SystemWeb程序集中,但它是System.Web名称空间中的一个扩展方法,因此您需要拥有对前者的引用,并对后者进行using

票数 743
EN

Stack Overflow用户

发布于 2014-01-16 05:09:56

如果你在控制器之外,我相信你需要引用当前的HttpContext。MVC控制器具有对当前上下文的基本引用。然而,除此之外,您必须显式地声明您想要当前的HttpContext

代码语言:javascript
复制
return HttpContext.Current.GetOwinContext().Authentication;

至于它没有显示出来,使用上面显示的代码( IAuthenticationManager)的新MVC5项目模板在帐户控制器的顶部有以下using语句:

代码语言:javascript
复制
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程序集的一部分。

票数 180
EN

Stack Overflow用户

发布于 2015-01-30 05:14:59

经过反复试验比较我的控制器和Asp.Net模板控制器的使用语句

代码语言:javascript
复制
using System.Web;

为我解决了这个问题。您还需要添加:

代码语言:javascript
复制
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;

使用GetUserManager方法。

微软不能找到一种方法来自动解决这个问题,通过右键单击并像其他缺少的using语句一样解决?

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21148209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档