76

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.

Set
  • 47,577
  • 22
  • 132
  • 150
Kemal Tezer Dilsiz
  • 3,739
  • 5
  • 24
  • 43

2 Answers2

103

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

Sam Borick
  • 935
  • 2
  • 10
  • 31
Set
  • 47,577
  • 22
  • 132
  • 150
16

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

Júlio Almeida
  • 1,539
  • 15
  • 23