How to extract custom header value?

77,397

Solution 1

Request.Headers returns Microsoft.AspNetCore.Http.IHeaderDictionary interface that define next property:

StringValues this[string key] { get; set; }

IHeaderDictionary has a different indexer contract than IDictionary, where it will return StringValues.Empty for missing entries.

Return type: Microsoft.Extensions.Primitives.StringValues

Returns: The stored value, or StringValues.Empty if the key is not present.

So, you can simply use Request.Headers["environment"] to get value of "environment" header

Solution 2

Since this answer is viewed quite a lot, you can also access this fields by using attributes in the parameters. Here is an example:

enter image description here

In the request you can access any fields in the body, queryString or headers. Here is the Postman example regarding the authorization header:

enter image description here

Share:
77,397
Kemal Tezer Dilsiz
Author by

Kemal Tezer Dilsiz

https://www.couchsurfing.com/people/ktdilsiz

Updated on March 17, 2021

Comments

  • Kemal Tezer Dilsiz
    Kemal Tezer Dilsiz about 3 years

    I have this exact code from the accepted answer in my project which I need to migrate into ASP.NET Core MVP.

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

    var env = Request.Headers.GetValues("environment").First();
    

    How can I implement this in .NET Core?

    I hope this is not considered to be a duplicate question because I am trying to do this with the new system rather than the old one. I would also be fine if someone adds an answer to the link regarding the current version.

    Edit: Where all types for http headers gone in ASP.NET 5? I tried this link but API may have changed. I don't think this is a duplicate for that question either.