.net WebClient未处理KeepAlive-将不需要的文本添加到JSON正文

.net WebClient未处理KeepAlive-将不需要的文本添加到JSON正文,.net,json,webclient,.net,Json,Webclient,我有一个很奇怪的问题,我似乎找不到。我将小的JSON对象发布到一个Web服务,并获取表示为字符串的大JSON对象。我遇到的问题是,在返回的JSON对象中,我随机得到以下文本: DNT:1连接:关闭 当我尝试对JSON进行反序列化时,这显然会引发问题。起初是消息正文中的Expect100 Continue,然后是KeepAlive,现在是连接:Close。我只是使用标准WebClient,但我创建了一个新类,该类继承自WebClient,因此我可以正确设置标题,如下所示: public class

我有一个很奇怪的问题,我似乎找不到。我将小的JSON对象发布到一个Web服务,并获取表示为字符串的大JSON对象。我遇到的问题是,在返回的JSON对象中,我随机得到以下文本:

DNT:1连接:关闭

当我尝试对JSON进行反序列化时,这显然会引发问题。起初是消息正文中的Expect100 Continue,然后是KeepAlive,现在是连接:Close。我只是使用标准WebClient,但我创建了一个新类,该类继承自WebClient,因此我可以正确设置标题,如下所示:

public class CustomWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address);
        if (request is HttpWebRequest)
        {
            (request as HttpWebRequest).KeepAlive = false;
            (request as HttpWebRequest).ServicePoint.Expect100Continue = false;
        }
        return request;
    }
}
下面是我的呼叫实现:

using (var webClient = new CustomWebClient())
{
    webClient.Proxy = null;
    webClient.Headers[HttpRequestHeader.ContentType] = Constants.HttpJSONencodedHeader;

    return webClient.UploadData(request.Url, Constants.HttpPostVerb, Encoding.ASCII.GetBytes(request.Params.GetFormattedJSon()));
}
我所期待的是一个JSON对象,它看起来如下所示:

(简体)

这就是偶尔随机出现的情况:

"280950": {
   "min": 1.0,
   "max": 1.0,
   "count": 1,
   "missing": 0,
   "distinctValues": [1],
   "countDistinct": 1,
   "sum": 1.
   DNT: 1
   Connection: close "stddev": 0.0,
   "facets": {}
}

要强调的部分是在JSON对象的中间有这个权限:

 .
        DNT: 1
        Connection: close
如有任何帮助/建议,将不胜感激

编辑:响应的文本大小约为8MB,因此我不想发布完整响应,但以下是标题:

HTTP/1.0 200 OK
Set-Cookie: ServerID=1139; path=/
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
X-Powered-By: ServiceStack/3.971 Win32NT/.NET
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Date: Tue, 31 Mar 2015 15:42:41 GMT
Connection: close
Content-Length: 5802075
编辑#2: 网络布局:

Client - ASP.NET 4.0 (IIS 7, Server 2012)
  Web Service - ASP.NET 4.0 ServiceStack v3.9.71.0
     SOLR 5 - Jetty (Linux, iunno some flavour)

你有没有看过像Wireshark这样的网站的流量?听起来这可能是正在使用的web服务器中的一个bug…嘿,Jon-所以实际上是一个web服务(a)调用另一个调用SOLR的web服务(B)。我已经捕获了B&A之间fiddler的流量,并看到了其中的内容。对,所以你应该检查一下答案是什么样的-理想情况下,将它们包括在问题中。WebClient似乎不太可能开始将响应头放在正文中…嘿,Jon-响应是8MB的JSON,所以我不想发布整个正文。响应头看起来都很好,主体只是一堆JSON,在主体中的某个地方有DNT:1连接:close。这种情况并不总是发生,也不会在响应很小的情况下发生(如果“Connection:close”在主体中(而不是在标题中),那么这是服务器的错误……客户端(发出请求)如何向响应中添加文本?
Client - ASP.NET 4.0 (IIS 7, Server 2012)
  Web Service - ASP.NET 4.0 ServiceStack v3.9.71.0
     SOLR 5 - Jetty (Linux, iunno some flavour)