【问题标题】:Accessing a request header from inside a custom PostSharp attribute从自定义 PostSharp 属性中访问请求标头
【发布时间】:2016-10-08 04:22:48
【问题描述】:
我正在尝试从自定义 PostSharp 属性中访问 HttpRequestMessage。
在我的 Web 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
}
}
【问题讨论】:
标签:
c#
.net
asp.net-mvc
asp.net-web-api
postsharp
【解决方案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();
}
}