是否有用于添加HttpResponseHeader的内容标题类型?

时间:2013-03-11 16:40:55

标签: c# .net http-response-codes

我在HttpResponseHeaders中看到的唯一方法是Add,它采用字符串类型的字符串类型。 我只是想知道.NET提供了一个字符串中的HttpResponseHeader类型包含列表吗?

所以我能做到:

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

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

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

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

5 个答案:

答案 0 :(得分:6)

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

HttpContentHeaders(可通过任何System.Net.Http.HttpContent类型的Headers属性访问)具有 Content-Type Content的预定义属性-Length Content-Encoding 等...(这似乎是你追求的标题)。

您可以这样设置:

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

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

答案 1 :(得分: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上下文的方式

希望这会有所帮助

答案 2 :(得分:0)

您可以在WebRequest和WebResponse上按属性获取和设置公共标题,例如HttpWebRequest.ContentType

答案 3 :(得分:0)

C#具有从Enum到string的内置转换。考虑这些任务:

int val = 5;
HttpResponseHeader header = HttpResponseHeader.Allow 

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

response.Headers.Add(HttpResponseHeader.ContentRange.ToString(), "something");

答案 4 :(得分: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();