Asp.net web api 如何在自托管2.2 WebApi中使用IAppBuilder.CreatePerOwinContext

Asp.net web api 如何在自托管2.2 WebApi中使用IAppBuilder.CreatePerOwinContext,asp.net-web-api,asp.net-mvc-5,Asp.net Web Api,Asp.net Mvc 5,我有一个基于OWIN的2.2WebAPI项目。我想将授权加入其中,并与我的MVC5网站共享身份服务。(关于这样做是否容易或有多容易,有很多意见。)我试图分享授权/认证cookie,这让我陷入了困境。我发现WebApi代码没有看到/处理cookie,即使它在请求头中。然后我决定尝试一个测试,在这个测试中,我将在一个调用中在WebApi中生成cookie,并在另一个调用中接受它。这种尝试让我意识到CreatePerOwinContext并没有像我认为的那样工作 我将以下代码放在一个生成cookie的

我有一个基于OWIN的2.2WebAPI项目。我想将授权加入其中,并与我的MVC5网站共享身份服务。(关于这样做是否容易或有多容易,有很多意见。)我试图分享授权/认证cookie,这让我陷入了困境。我发现WebApi代码没有看到/处理cookie,即使它在请求头中。然后我决定尝试一个测试,在这个测试中,我将在一个调用中在WebApi中生成cookie,并在另一个调用中接受它。这种尝试让我意识到CreatePerOwinContext并没有像我认为的那样工作

我将以下代码放在一个生成cookie的方法中

var ctx = Request.GetOwinContext();
var asim = ctx.Get<ApplicationSignInManager>();
asim.SignInAsync(user, false, false);
var ctx=Request.GetOwinContext();
var asim=ctx.Get();
asim.SignInAsync(用户、假、假);
并发现Get返回null。然后,我在我的初创公司中调查了代码

appBuilder.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
appBuilder.CreatePerOwinContext(ApplicationSignInManager.Create);
我在ApplicationSigInManger.Create上放置了一个断点,但从未到达该断点。我在MVC5代码中的同一位置放置了一个断点,并且确实命中了断点。是的,我确实验证了我正在通过调用CreatePerOwinContext继续访问。由于没有命中断点,我得出结论,WebApi中对CreatePerOwinContext的调用与MVC5中的工作方式不同


MVC项目和WebApi项目都使用.Net 4.6版本代码和各自NuGet软件包的最新版本。

我遇到了同样的问题。找到解决方案有什么好运气吗?@gigi我已经转移到其他项目上,但这个项目一直没有成功。我目前正在一个IIS托管的站点上工作,该站点既有MVC控制器,也有WebAPI控制器,并已设法在它们之间共享安全性/权限等。我生成了一个MVC4.6SPA站点,并将一些代码抄录到我的非SPA站点中。查看AccountController。授权和任何引用它的内容。我不确定这些新信息是否能解决最初的问题。我也有同样的问题。找到解决方案有什么好运气吗?@gigi我已经转移到其他项目上,但这个项目一直没有成功。我目前正在一个IIS托管的站点上工作,该站点既有MVC控制器,也有WebAPI控制器,并已设法在它们之间共享安全性/权限等。我生成了一个MVC4.6SPA站点,并将一些代码抄录到我的非SPA站点中。查看AccountController。授权和任何引用它的内容。我不确定这些新信息是否能解决最初的问题。