10

我在 HttpResponseHeaders 中看到的唯一方法是 Add,它采用字符串类型作为标头类型。我只是想知道.NET 是否提供了字符串中的 HttpResponseHeader 类型内容列表?

所以我可以这样做:

HttpResponseMessage response = Request.CreateResponse.........;
response.Headers.Add(xxxxx.ContentRange, "something");

我可以看到 HttpResponseHeader 中有一个枚举列表,但它没有相应地提供字符串值......

即HttpResponseHeader.ContentRange,但正确的标头字符串应该是Content-Range

如果我错了,请纠正我...

4

5 回答 5

11

System.Net.Http.Headers 命名空间中有三个强类型 HTTP 标头类:

HttpContentHeaders (可通过任何 System.Net.Http.HttpContent 类型的属性访问)具有Content-TypeContent-LengthContent-EncodingHeaders等的预定义属性......(这似乎是你的标题之后)。

您可以像这样设置它们:

var content = new StringContent("foo");
content.Headers.Expires = DateTime.Now.AddHours(4);
content.Headers.ContentType.MediaType = "text/plain";

...并且标题名称将正确设置。

于 2013-03-11T18:06:49.507 回答
1

也许你可以尝试这样的事情。

var whc = new System.Net.WebHeaderCollection();
whc.Add(System.Net.HttpResponseHeader.ContentRange, "myvalue");
Response.Headers.Add(whc);

在 webapi 上下文中,最后一行可能是:

HttpContext.Current.Response.Headers.Add(whc);

无论如何,@ServiceGuy 的答案是进入 webapi/mvc 上下文的方式

希望这会有所帮助

于 2013-03-11T17:22:59.947 回答
0

您可以通过 WebRequest 和 WebResponse 上的属性获取和设置公共标头,例如HttpWebRequest.ContentType

于 2013-03-11T17:25:37.363 回答
0

C# 具有从枚举到字符串的内置转换。考虑这些任务:

int val = 5;
HttpResponseHeader header = HttpResponseHeader.Allow 

现在,val.ToString()将返回字符串"5",但header.ToString()会返回"Allow"。所以我谦虚地建议使用

response.Headers.Add(HttpResponseHeader.ContentRange.ToString(), "something");
于 2013-03-11T17:34:38.980 回答
0

使用 ContentType 属性:https ://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.contenttype.aspx 。

通过执行以下操作,我能够在我的 WCF 服务实现中做到这一点:

// Get the outgoing response portion of the current context
var response = WebOperationContext.Current.OutgoingResponse;

// Add ContentType header that specifies we are using JSON
response.ContentType = new MediaTypeHeaderValue("application/json").ToString();
于 2016-07-13T21:25:28.190 回答