Reputation: 4302
The only method I see in HttpResponseHeaders is Add which takes string type for header type. I just wonder did .NET provided a list of HttpResponseHeader type contants in string?
So I can do:
HttpResponseMessage response = Request.CreateResponse.........;
response.Headers.Add(xxxxx.ContentRange, "something");
I can see there is a list of Enum in HttpResponseHeader, but it doesn't provide string value conrespondingly...
i.e HttpResponseHeader.ContentRange, but the correct header string should be Content-Range
Correct me if I am wrong...
Upvotes: 10
Views: 14094
Reputation: 2356
Use the ContentType Property: https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.contenttype.aspx.
I was able to do this in my WCF service implementation by doing the following:
// 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();
Upvotes: 0
Reputation: 15413
Maybe you can try something like this.
var whc = new System.Net.WebHeaderCollection();
whc.Add(System.Net.HttpResponseHeader.ContentRange, "myvalue");
Response.Headers.Add(whc);
In a webapi context, the last line could be :
HttpContext.Current.Response.Headers.Add(whc);
anyway, @ServiceGuy's answer is the way to go in a webapi/mvc context
Hope this will help
Upvotes: 1
Reputation: 5667
There are three strongly-typed HTTP header classes in the System.Net.Http.Headers namespace:
HttpContentHeaders (which is accessible via the Headers
property of any of the System.Net.Http.HttpContent types) has pre-defined properties for Content-Type, Content-Length, Content-Encoding etc... (which seem to be the headers you were after).
You can set them like this:
var content = new StringContent("foo");
content.Headers.Expires = DateTime.Now.AddHours(4);
content.Headers.ContentType.MediaType = "text/plain";
...and the header names will be set correctly.
Upvotes: 11
Reputation: 2861
C# has a built-in conversion from Enum to string. Consider these assignments:
int val = 5;
HttpResponseHeader header = HttpResponseHeader.Allow
Now, val.ToString()
will return the string "5"
, but header.ToString()
will return "Allow"
. So I humbly suggest using
response.Headers.Add(HttpResponseHeader.ContentRange.ToString(), "something");
Upvotes: 0
Reputation: 151690
You can get and set common headers by property on WebRequest and WebResponse, like HttpWebRequest.ContentType.
Upvotes: 0