http headers 的所有类型都在 ASP.NET 5 中去了哪里?
Where all types for http headers gone in ASP.NET 5?
以前,在 WebApi(在 .NET 4.x 上)我们可以通过类型化接口处理 headers 请求和响应(参见 HttpRequestMessage.Headers
/HttpResponseMessage.Headers
).
现在,在 ASP.NET 5 中,我们有 HttpRequest
和 HttpResponse
,Headers 属性 类型为 IHeaderDictionary
。但它只是一个无类型的字典。
下面我举了一个例子,类型化访问可以 return a fine-tuned http-response。需要创建一个 HttpResponseMessage
并填充它的 Headers collection(顺便说一句)。
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 + "\"");
在 Asp.net 5 中,headers collection 现在是单个 class 即 HeaderDictionary
,可用于请求和响应 headers.这将充当 headers 的基于键值的存储。我能看到的充分理由是因为 Owin 的支持。一个商店可以用于各种 Owin 支持的中间件,例如WebApi、SignalR 为您提供可扩展性以在 Header collection.
中添加更多信息
如果为 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 + "\"");
以前,在 WebApi(在 .NET 4.x 上)我们可以通过类型化接口处理 headers 请求和响应(参见 HttpRequestMessage.Headers
/HttpResponseMessage.Headers
).
现在,在 ASP.NET 5 中,我们有 HttpRequest
和 HttpResponse
,Headers 属性 类型为 IHeaderDictionary
。但它只是一个无类型的字典。
下面我举了一个例子,类型化访问可以 return a fine-tuned http-response。需要创建一个 HttpResponseMessage
并填充它的 Headers collection(顺便说一句)。
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 + "\"");
在 Asp.net 5 中,headers collection 现在是单个 class 即 HeaderDictionary
,可用于请求和响应 headers.这将充当 headers 的基于键值的存储。我能看到的充分理由是因为 Owin 的支持。一个商店可以用于各种 Owin 支持的中间件,例如WebApi、SignalR 为您提供可扩展性以在 Header collection.
如果为 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 + "\"");