
[英]Loading stored procedure from EntitySpaces takes 40x longer than from SQL client
[英]IIS and RestSharp -> Response body cut off for 40x error?
情况
看起来很简单:我有一个在IIS 7上运行的服务。客户端POSTS数据(application / json)我在接受之前验证了数据。
如果我不接受它,我真的想要返回406和〜相同的数据作为正文(可能已更改/更正)[1]。 不幸的是,这导致截断的响应主体也称为无效的json。
首先,让我们为我的错误启用passthrough,因为IIS会尝试变聪明:
<httpErrors errorMode="Detailed" existingResponse="PassThrough">
</httpErrors>
我的代码的相关部分与道德相当:
HttpResponseBase response = context.HttpContext.Response;
response.StatusCode = StatusCode;
response.StatusDescription = StatusDescription;
if (!string.IsNullOrEmpty(ContentType))
response.ContentType = ContentType;
else
response.ContentType = "application/json";
if (ContentEncoding != null)
response.ContentEncoding = ContentEncoding;
using (var sw = new StreamWriter(response.OutputStream))
{
sw.Write(JsonConvert.SerializeObject(Data));
}
在客户端,我正在做一个天真的(找到json截断的问题)
var response = myRestClient.Execute(myRestRequest);
问题
如果响应返回状态代码200,我会得到这个
response.ContentLength == 69345
response.RawBytes.Length == 69345
如果我改变什么 ,但(在我的情况下,以406)返回的状态代码,返回同样的数据 ,我看到这一点:
response.ContentLength == 69345
response.RawBytes.Length == 65536 // <--- Not! Good!
现在,65536是一个非常神奇的数字,是宇宙射线的重合或非常可重复的结果。 谁现在试图聪明并丢弃我的数据,如果它超过无符号短的长度? 我现在尝试潜入RestSharp代码库,但我真的怀疑IIS再次欺骗我。
1:如果这是一个坏主意,请详细说明原因?
看一下这篇文章: RestSharp RestResponse将内容截断为64 kb
这是因为RestSharp使用.NET Framework中的HttpWebRequest类。 该类有一个名为DefaultMaximumErrorResponseLength的静态属性。 此属性确定错误响应的最大长度,此属性的默认值为64Kb。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.