I'm having problems returning a HTTP 204 with no body using ServiceStack
If I return:
return new HttpResult() {
StatusCode = HttpStatusCode.NoContent
};
The first time it works perfectly, but a repeated call will cause Fiddler to throw an error stating last response wasn't formed properly. I believe it is because the content type is not explicitly set to application/json
, and the response comes back with an empty string or single space character.
Setting ContentType = "json"
on the HttpResult
object for some reason returns a HTTP 405 response. (which is a side curiosity - not my primary concern)
If I return void, then the response is an HTTP 200, which I am using currently, but I'd like to think I could provide the preferred 204 response.
Thanks for your time.
I use a simple response filter to set a
No Content
header on the response if there is no response.Set the filter in the
AppHost
Configure
method:Then when a method returns
void
the correct header will be set.Regarding your
405
error response for JSON. This will only occur if you send an empty response and a status200
, as this is malformed JSON. But sending the above204 No Content
will prevent this error. See this answer for more info.I usually do something along these lines
I like this approach instead of the global response filter since this allows me to have all logic pertaining to this request in the same place instead of having to remember what response filters I have.