HttpActionContext.Request does not have CreateResponse Meth
asp.net-mvc, asp.net-web-api, c#
Solution
`CreateResponse` is an extension method defined in the `System.Net.Http` namespace. So make sure you've brought it into scope by adding the correct `using` directive:
using System.Net.Http;
Problem
I am trying to create a custom AuthorizeAttribute in ASP.Net Web API to handle Basic Auth. When overriding HandleUnauthorizedRequest I find that the HttpActionContext.Request doesn't have a CreateResponse method. The project is MVC 4 targetting .net 4.5. I updated Web API to version 2 using nuget. ``` using System; using System.Net.Http.Headers; using System.Text; using System.Threading; using System.Web.Http; namespace BasicAuth.Security { public class BasicAuthAttribute : AuthorizeAttribute { public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext) { if (Thread.CurrentPrincipal.Identity.IsAuthenticated) { return; } var authHeader = actionContext.Request.Headers.Authorization; if (authHeader != null) { if (authHeader.Scheme.Equals("basic", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(authHeader.Parameter)) { var credentials = GetCredentials(authHeader); //Handle authentication return; } } HandleUnauthorizedRequest(actionContext); } private string[] GetCredentials(AuthenticationHeaderValue authHeader) { var raw = authHeader.Parameter; var encoding = Encoding.ASCII; var credentials = encoding.GetString(Convert.FromBase64String(raw)); return credentials.Split(':'); } protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext) { actionContext.Response = actionContext.Request. //No CreateResponse Method ? } } } ``` I am sure it must be a missing or incorrect reference somewhere, it is rather confusing though. Any help would be much appreciated. Thanks