以前,在WebApi(在.NET 4.x上),我们可以通过类型化接口处理请求和响应的标头(请参阅HttpRequestMessage.Headers
/ HttpResponseMessage.Headers
)。
现在,在ASP.NET 5中,我们有HttpRequest
和HttpResponse
,其Headers属性类型为IHeaderDictionary
。但它只是一个无类字典。
下面我给一个带有类型访问的例子可以返回一个微调的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 + "\"");
答案 0 :(得分:16)
如果您为Microsoft.AspNetCore.Http
添加using语句,HttpRequest
和HttpResponse
到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 + "\"");
答案 1 :(得分:0)
在Asp.net 5中,headers集合现在是单个类,即HeaderDictionary
,可用于请求和响应头。这将作为标题的基于键值的商店。我能看到的好理由是因为Owin的支持。可以在各种Owin支持的中间件之间使用一个商店,例如WebApi,SignalR,它为您提供了在Header集合中添加更多信息的可扩展性。