ASP.NET l'API Web de l'Authentification de Base de l'Autorisation d'en-Tête

J'ai un BasicAuthenticationAttribute qui inspecte l'Autorisation d'en-tête dans la demande, mais malgré elle, elle croit toujours que l'Autorisation d'en-tête est nulle:

public class BasicAuthenticationAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (actionContext.Request.Headers.Authorization == null)
        {
            actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
        }

        ...

Si je inspecter actionContext.Request.Headers je peux voir Authorization répertoriés:

{Connection: Keep-Alive
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-gb
Authorization: REDACTED_BUT_PRESENT==
Host: localhost:44300
Referer: https://localhost:44300/
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E)
}

Mise à jour

Je viens d'inspecter la demande complète des en-têtes et ils ont l'air comme ça... je peux voir un en-tête d'Autorisation dans la première section, mais l'en-tête d'Autorisation dans la deuxième section est clairement nul.

demande.Les en-têtes de

{Connection: Keep-Alive
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-gb
Authorization: REDACTED_BUT_PRESENT==
Host: localhost:1734
Referer: http://localhost:1734/
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E)
}
    base {System.Net.Http.Headers.HttpHeaders}: {Connection: Keep-Alive
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-gb
Authorization: VXNlcjpQYXNzd29yZA==
Host: localhost:1734
Referer: http://localhost:1734/
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E)
}
    Accept: {*/*}
    AcceptCharset: {}
    AcceptEncoding: {gzip, deflate}
    AcceptLanguage: {en-gb}
    Authorization: null
    CacheControl: null
    ... removed for brevity ...
    Warning: {}
êtes-vous en essayant l'authentification de Base.
oui - je suis réglage de l'Autorisation d'en-tête et de l'inspection à l'aide de mon Action de Filtre.
J'ai fait un gestionnaire de Message et il semble bien fonctionner. Je vais essayer avec l'action du filtre. Pouvez-vous vérifier si cela permet de gist.github.com/3872727 -Gestionnaire ,gist.github.com/3872715 - Test Unitaire
C'est essentiellement le même pour moi - je peux voir l'en-tête d'Autorisation comme posté, mais dans le Gestionnaire de Messages, il pense que request.Headers.Authorization est null. Permettez-moi d'inspecter les en-têtes générés par les tests unitaires et voir si elle est différente.

OriginalL'auteur Fenton | 2012-10-11