在DelegatingHandler中添加web api标头

时间:2015-01-12 20:30:47

标签: c# asp.net-web-api asp.net-web-api2

我正在尝试在webapi项目的委托处理程序中为请求添加标头 像这样:

protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
{
    var corGuid = CommonBaseController.CreateSafeCorrelationId(string.Empty);
    cor = corGuid.ToString();
    request.Content.Headers.Add("correlationId", cor);
    var response = await base.SendAsync(request, cancellationToken);
}

进入控制器后,我希望能够得到这样的标题:

var cor = request.Headers["correlationId"];

然而标题不存在。

2 个答案:

答案 0 :(得分:0)

如何将值存储在HttpRequestMessage.Properties中呢?

DelegatingHandler:

request.Properties.Add("correlationId", CommonBaseController.CreateSafeCorrelationId(string.Empty).ToString());

ApiController:

var id = Request.Properties["correlationId"];

答案 1 :(得分:0)

我使用了错误的请求对象。 Headers不会显示在HttpContext.Current.Request中,而是显示在Controller中的base.Request对象中。

由于