哪个http头的类型在ASP.NET 5中消失了?

问题描述 投票:13回答:2

以前,在WebApi(在.NET 4.x上),我们可以通过类型化接口处理请求和响应的头文件(请参阅HttpRequestMessage.Headers / HttpResponseMessage.Headers)。现在,在ASP.NET 5中,我们有HttpRequestHttpResponse以及类型为IHeaderDictionary的Headers属性。但它只是一个无类字典。

下面我给一个带有类型访问的例子可以返回一个微调的http响应。需要创建一个HttpResponseMessage并填充其Headers集合(键入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 + "\"");
c# asp.net-core asp.net-core-mvc
2个回答
16
投票

如果你为Microsoft.AspNetCore.Http添加using语句,那么在HttpRequestHttpResponse上有GetTypedHeaders的扩展方法,它们可以为你提供所需的类型安全性。

在这个例子中,我还为Microsoft.Net.Http.Headers添加了using语句,只是为了清理它。

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/HttpAbstractions on Github


0
投票

在Asp.net 5中,headers集合现在是单个类,即HeaderDictionary,可用于请求和响应头。这将作为标题的基于键值的商店。我能看到的好理由是因为Owin的支持。可以在各种Owin支持的中间件之间使用一个商店,例如WebApi,SignalR,它为您提供了在Header集合中添加更多信息的可扩展性。

© www.soinside.com 2019 - 2024. All rights reserved.