以前,在 WebApi(在 .NET 4.x 上)中,我们可以通过类型化接口(interface)处理请求和响应的 header (参见 HttpRequestMessage.Headers
/HttpResponseMessage.Headers
)。
现在,在 ASP.NET 5 中,我们有 HttpRequest
和 HttpResponse
,其 Headers 属性类型为 IHeaderDictionary
。但它只是一个无类型的字典。
下面我给出了一个示例,其中类型化访问可以返回经过微调的 http 响应。它需要创建一个 HttpResponseMessage
并填充它的 Headers 集合(顺便说一句,这是输入的)。
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 + "\"");
关于c# - ASP.NET 5 中所有类型的 http header 都去了哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706719/