atconway atconway - 4 months ago 50
C# Question

How to extract custom header value in Web API message handler?

I currently have a message handler in my Web API service that overrides 'SendAsync' as follows:

protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)

Within this code I need to inspect a custom added request header value named
. The problem is when I do the following:

if (request.Headers.Contains("MyCustomID")) //OK
var id = request.Headers["MyCustomID"]; //build error - not OK

...I get the following error message:

Cannot apply indexing with [] to an expression of type

How can I access a single custom request header via the
(MSDN Documentation) instance passed into this overridden method?


Try something like this:

IEnumerable<string> headerValues = request.Headers.GetValues("MyCustomID");
var id = headerValues.FirstOrDefault();

There's also a TryGetValues method on Headers you can use if you're not always guaranteed to have access to the header.