Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't find Request.GetOwinContext

I have been searching for an hour trying to figure out why this isn't working.

I have a ASP.Net MVC 5 application with a WebAPI. I am trying to get Request.GetOwinContext().Authentication, however I can't seem to find how to include GetOwinContext. Here is my code:

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web; using System.Web.Mvc; using System.Web.Security; using TaskPro.Models;  namespace TaskPro.Controllers.api {     public class AccountController : ApiController     {         [HttpPost]         [AllowAnonymous]         public ReturnStatus Login(LoginViewModel model)         {              if (ModelState.IsValid)             {                 var ctx = Request.GetOwinContext(); // <-- Can't find this                  return ReturnStatus.ReturnStatusSuccess();             }              return base.ReturnStatusErrorsFromModelState(ModelState);         }     } } 

From what I've read, it should be part of the System.Net.Http, but I've included that and it still isn't resolving. Ctrl-Space doesn't give me any intellisense options either.

What am I missing here?

like image 501
Scottie Avatar asked Mar 23 '14 23:03

Scottie


1 Answers

The GetOwinContext extension method is in the System.Web.Http.Owin dll which needs to be downloaded as a nuget package (The nuget package name is Microsoft.AspNet.WebApi.Owin)

Install-Package Microsoft.AspNet.WebApi.Owin 

See msdn here: http://msdn.microsoft.com/en-us/library/system.net.http.owinhttprequestmessageextensions.getowincontext(v=vs.118).aspx

Nuget package here: https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Owin

However, the method is still part of the System.Net.Http namespace, so the using definitions you have should be fine.

EDIT

Okay, to clear up some confusion: If you are using an ApiController (i.e MyController : ApiController) you will require the Microsoft.AspNet.WebApi.Owin package.

If you are using a regular Mvc controller (i.e. MyController : Controller) you will need the Microsoft.Owin.Host.SystemWeb package.

In MVC 5 the pipelines for Api and regular MVC were very different, but often have the same naming conventions. So an extension method in one does not apply to the other. Same for a lot of the action filters etc.

like image 60
Simon C Avatar answered Oct 02 '22 21:10

Simon C