如何在自托管的2.2 WebApi

时间:2015-08-12 11:50:38

标签: asp.net-web-api asp.net-mvc-5

我有一个工作自托管的基于OWIN的2.2 WebApi项目。我想将授权放入其中并与我的MVC 5网站共享身份服务。 (关于是否或如何容易这样做,有很多意见。)我尝试共享授权/身份验证cookie导致我陷入困境。我发现WebApi代码没有看到/处理cookie,即使它在请求标头中。然后我决定尝试一个测试,我将在一次调用中在WebApi中生成cookie并在另一个调用上接受它。那次尝试让我意识到CreatePerOwinContext没有像我想象的那样工作。

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

var ctx = Request.GetOwinContext();
var asim = ctx.Get<ApplicationSignInManager>();
asim.SignInAsync(user, false, false);

并发现Get返回null。然后我在我的启动中调查了代码

appBuilder.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

我在ApplicationSigInManger.Create上放置了一个断点,但从未到达它。我在我的MVC 5代码中的相同位置放置了一个断点并且确实击中了断点。是的,我确实已经确认我已经到达并继续调用CreatePerOwinContext。缺少命中断点使我得出结论,对CreateAerOwinContext的调用在WebApi中与在MVC 5中的工作方式不同。

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

0 个答案:

没有答案