2016-10-08 1 views
2

J'essaie d'accéder à un HttpRequestMessage à partir d'un attribut PostSharp personnalisé.Accès à un en-tête de demande à partir d'un attribut PostSharp personnalisé

Dans mon API Web que je pouvais faire comme ceci:

string headerText = Request.Headers.GetValues("TestHeader").First(); 

Cela ne semble pas travailler en dehors du contrôleur de l'API.

[Serializable] 
[AttributeUsage(AttributeTargets.Method)] 
public sealed class LogHeaderAttribute : OnMethodBoundaryAspect 
{ 
    public override void OnEntry(MethodExecutionArgs args) 
    { 
     // Log Web API request header info here 
    } 
} 

Répondre

1

Je trouve que je peux accéder aux en-têtes ainsi:

[Serializable] 
[AttributeUsage(AttributeTargets.Method)] 
public sealed class LogHeaderAttribute : OnMethodBoundaryAspect 
{ 
    public override void OnEntry(MethodExecutionArgs args) 
    { 
     ApiController apiController = (ApiController)args.Instance; 
     var context = apiController.ControllerContext; 
     HttpRequestHeaders headers = context.Request.Headers; 

     // Use Web API request header info here 
     string headerText = headers.GetValues("MyHeader").First(); 
    } 
}