在构建 ServiceStack 服务时,我们注意到响应几乎相同,只是 HttpResult 返回的是分块编码响应。
像这样使用 HttpResult 对象时:
return new HttpResult("0", ContentType.PlainText, HttpStatusCode.OK);
我们在 Fiddler 中看到这样的响应:
HTTP/1.1 200 OK
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: text/plain
Server: Microsoft-IIS/8.0
X-Powered-By: ServiceStack/3.954 Win32NT/.NET
X-Powered-By: ASP.NET
Date: Thu, 20 Jun 2013 13:33:17 GMT
但是当像这样使用 Response 属性时:
Response.ContentType = ContentType.PlainText;
Response.StatusCode = (int) HttpStatusCode.OK;
return "1";
我们在 Fiddler 中看到这样的响应:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/plain; charset=utf-8
Server: Microsoft-IIS/8.0
X-Powered-By: ServiceStack/3.954 Win32NT/.NET
X-Powered-By: ASP.NET
Date: Thu, 20 Jun 2013 14:38:39 GMT
Content-Length: 1
我们希望使用该HttpResult
版本,因为它看起来更干净,但需要不对其进行编码。每当添加 responseBody 对象时,它似乎都会对响应进行分块。当它被删除时,编码被删除。但是,即使将 显式设置AllowsPartialResponse
为 false 也无法解决此问题。