Къде изчезнаха всички типове за http заглавки в ASP.NET 5?

По-рано в WebApi (на .NET 4.x) можехме да работим със заглавки както на заявката, така и на отговора чрез въведени интерфейси (вижте HttpRequestMessage.Headers/HttpResponseMessage.Headers). Сега в ASP.NET 5 имаме HttpRequest и HttpResponse със свойството Headers от тип IHeaderDictionary. Но това е просто ненабран речник.

По-долу давам пример с въведен достъп, който може да върне фино настроен http-отговор. Това е необходимо за създаване на HttpResponseMessage и запълване на неговата колекция от заглавки (която беше въведена между другото).

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 + "\"");

person Shrike    schedule 17.04.2015    source източник


Отговори (2)


Ако добавите оператора using за Microsoft.AspNetCore.Http, има методи за разширение на HttpRequest и HttpResponse до GetTypedHeaders, които трябва да ви осигурят желаната безопасност на типа.

В примера също добавих израза using за Microsoft.Net.Http.Headers, само за да го изчистя.

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

Източник: aspnet/Http Абстракции в Github

person Matt DeKrey    schedule 18.04.2015
comment
Какво ще кажете за HttpContextBase? - person JoshYates1980; 29.01.2017

В Asp.net 5 колекцията от заглавки вече е един клас, т.е. HeaderDictionary, който може да се използва както за заглавки на заявка, така и за отговор. Това ще действа като базирано на ключова стойност хранилище за заглавки. Добрата причина, която виждам, е поддръжката на Owin. Един магазин може да се използва в различни поддържани от Owin междинен софтуер, напр. WebApi, SignalR, който ви предоставя разширяемост за добавяне на повече информация в колекцията от заглавки.

person vendettamit    schedule 17.04.2015