在构建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也无法解决此问题。
答案 0 :(得分:1)
如果您提交的测试覆盖了正确行为的pull-request,它将很快合并。