2015-04-17 17 views
10

In precedenza, in WebApi (su .NET 4.x) potevamo lavorare con le intestazioni sia della richiesta sia della risposta tramite interfacce tipizzate (vedere HttpRequestMessage.Headers/HttpResponseMessage.Headers). Ora, in ASP.NET 5 abbiamo HttpRequest e HttpResponse con proprietà Intestazioni di tipo IHeaderDictionary. Ma è solo un dizionario non tipizzato.Dove sono stati inseriti tutti i tipi di intestazioni http in ASP.NET 5?

Di seguito ho inserito un esempio con accesso digitato che potrebbe restituire una risposta http ben sintonizzata. È necessario creare uno HttpResponseMessage e riempire la sua collezione di intestazioni (che è stata digitata btw).

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK); 
response.Content = new StringContent(manifestContent); 
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/cache-manifest"); 
response.Headers.CacheControl = new CacheControlHeaderValue {NoCache = true, Public = true}; 
response.Headers.ETag = new EntityTagHeaderValue("\"" + etag + "\""); 

risposta

13

Se si aggiunge l'istruzione using per Microsoft.AspNetCore.Http, ci sono metodi di estensione sul HttpRequest e HttpResponse-GetTypedHeaders, che dovrebbe dare la sicurezza di tipo desiderato.

Nell'esempio, ho anche aggiunto l'istruzione using per Microsoft.Net.Http.Headers, solo per pulirlo.

var headers = Response.GetTypedHeaders(); 
headers.ContentType = new MediaTypeHeaderValue("text/cache-manifest"); 
headers.CacheControl = new CacheControlHeaderValue { NoCache = true, Public = true }; 
headers.ETag = new EntityTagHeaderValue("\"" + etag + "\""); 

Fonte: aspnet/HttpAbstractions on Github

+0

Che dire HttpContextBase? – JoshYates1980

0

In Asp.net 5 raccolta intestazioni è ora una singola classe cioè HeaderDictionary che può essere utilizzato sia per le intestazioni di richiesta e di risposta. Questo fungerà da archivio basato sul valore chiave per le intestazioni. La buona ragione che posso vedere è a causa del supporto di Owin. Un negozio può essere utilizzato utilizzato in vari middleware supportati da Owin, ad es. WebApi, SignalR che ti offre l'estensibilità per aggiungere ulteriori informazioni nella raccolta Header.

Problemi correlati