HttpActionContext.La demande n'a pas CreateResponse Meth
Je suis en train de créer un personnalisé AuthorizeAttribute dans ASP.Net Web API pour gérer l'Authentification Basique. Lors de la substitution HandleUnauthorizedRequest je trouve que le HttpActionContext.La demande n'a pas un CreateResponse méthode.
Le projet MVC 4 de mieux les cibler .net 4.5. J'ai mis à jour l'API Web pour la version 2 à l'aide de 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 ?
}
}
}
Je suis sûr qu'il doit être manquant ou incorrect de référence quelque part, c'est plutôt bien que déroutante. Toute aide serait grandement appréciée.
Grâce
Vous devez vous connecter pour publier un commentaire.
CreateResponse
est une extension de la méthode définie dans laSystem.Net.Http
espace de noms. Donc, assurez-vous que vous avez apportée au champ d'application par l'ajout de la bonneusing
directive:Piggy backing sur ce post
Dans un projet de après quelques la fusion et de la mise à niveau à la dernière .net de 4,6 nous avons eu un erreur lié et ce fut l'un des premiers postes trouvés.
Symptôme: "Pas de surcharge de la méthode de la Demande.CreateResponse()' a 0 arguments".
Problème: Le Système.Net.Http.Le formatage de manque de références à l'origine de l'erreur
Solution: Demander.CreateResponse() appartient à HttpRequestMessageExtensions vivant dans le package nuget Microsoft.AspNet.WebApi.Client, restaurer les packages nuget et si cela n'aide pas supprimer WebApi.Client (et dépendances) du projet, l'ajouter et la référence à un Système.Net.Http.Le formatage sera ajouté à nouveau.
(autre solution: ajouter une référence > parcourir > aller sur "[dossier de solution]packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45" et sélectionnez "System.Net.Http.Formatting.dll"