c# - ASP.NET 5 中所有类型的 http header 都去了哪里?

标签 c# asp.net-core asp.net-core-mvc

以前,在 WebApi(在 .NET 4.x 上)中,我们可以通过类型化接口(interface)处理请求和响应的 header (参见 HttpRequestMessage.Headers/HttpResponseMessage.Headers)。 现在,在 ASP.NET 5 中,我们有 HttpRequestHttpResponse,其 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语句,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

关于c# - ASP.NET 5 中所有类型的 http header 都去了哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706719/

相关文章:

c# - Docker Copy 使用 ASP.net Core 失败

asp.net-core - 如何在asp.net core Blazor中调用js脚本文件

asp.net-core - 如何在 Asp.net 核心服务类中调用 View 组件?

security - 如何手动解密 ASP.NET Core 身份验证 cookie?

c# - 读取已打印到控制台的值

java - 检查数字是否为泛数字的最快算法?

asp.net-core - Controller.json 设置 Serialization.ReferenceLoopHandling

c# - 使用特定的 HttpMessageHandler 注入(inject)单实例 HttpClient

c# - 让设计者为 UserControl 的简单 List 属性生成 AddRange

asp.net-core - 将数据传递给 IdentityServer4 中的 IProfileService