以前,在WebApi(.NET 4.x)中,我们可以通过类型化的接口处理请求和响应的头部(参见HttpRequestMessage.Headers / HttpResponseMessage.Headers).
现在,在ASP.NET 5中,我们有HttpRequest和HttpResponse,Headers属性类型为IHeaderDictionary.但它只是一个无类型的字典.
现在,在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 + "\"");
解决方法
如果添加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 + "\"");