2016-10-04 5 views
7

Comment obtenir une classe d'en-tête fortement typé de l'espace de noms System.Net.Http.Headers à partir d'un contrôleur ASP.NET Core? Dans un contrôleur dérivé de Controller, Request.Headers est disponible, mais il renvoie simplement IHeaderDictionary. Il existe également une méthode d'extension HeaderDictionaryTypeExtensions.GetTypedHeaders, mais elle renvoie RequestHeaders, qui n'a que certains en-têtes. La classe HttpRequestHeaders possède la liste d'en-têtes la plus complète, mais la procédure à suivre pour accéder à cette liste n'est pas claire.Obtenir la classe d'en-tête fortement typé dans ASP.NET base

Par exemple, comment voulez-vous obtenir un AuthenticationHeaderValue? Une option est AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]), mais cela nécessite de coder en dur le nom de l'en-tête. Peut-être y a-t-il une façon non codée de se rendre à HttpRequestHeaders.Authorization.

+0

double possible de [Si tous les types pour les en-têtes HTTP disparu dans ASP.NET 5?] (Http://stackoverflow.com/questions/29706719/where-all-types-for-http-headers-gone -in-asp-net-5) – Tseng

+0

@Tseng Cette autre question a une réponse acceptée basée sur 'RequestHeaders', ce qui est utile pour certains en-têtes, mais pas pour d'autres. Cette question se concentre sur la façon d'obtenir le 'HttpRequestHeaders' plus complet disponible dans ASP.NET Core 1.0. –

+0

J'ai posté cette question comme un problème sur le [projet GitHub] (https://github.com/aspnet/Mvc/issues/5680). –

Répondre

4
AuthenticationHeaderValue.Parse(Request.Headers[HeaderNames.Authorization])