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