Доступ к заголовку запроса из пользовательского атрибута PostSharp

#c# #.net #asp.net-mvc #asp.net-web-api #postsharp

#c# #.net #asp.net-mvc #asp.net-web-api #postsharp

Вопрос:

Я пытаюсь получить доступ к a HttpRequestMessage из пользовательского атрибута PostSharp.

В моем веб-API я мог бы сделать это следующим образом:

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

Похоже, это не работает вне контроллера API.

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

Ответ №1:

Я обнаружил, что могу получить доступ к заголовкам таким образом:

 [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();
    }
}