4

我正在通过网络服务使用HttpWebRequest字节POST数组图片,图片大小类似于byte[4096]

代码:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(wsHost);
webRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
webRequest.Headers.Add(HttpRequestHeader.KeepAlive, "true");

我收到一个错误:

The underlying connection was closed. A connection that was expected to be kept alive was closed by the server

是服务器问题,还是我发帖问题?

4

1 回答 1

6

这可能是很多事情。否则可以连接到服务器吗?

如果是这样,请尝试通过以下方式关闭 Expected 100 Continue(在您发布 POST 之前)

System.Net.ServicePointManager.Expect100Continue = false;

根据 HTTP 1.1 协议,当发送这个 header 时,表单数据不会随初始请求一起发送。相反,如果实施正确,此标头会发送到 Web 服务器,该服务器会响应 100(继续)。但是,并非所有 Web 服务器都能正确处理此问题,包括我尝试向其发布数据的服务器。

通过http://haacked.com/archive/2004/05/15/http-web-request-expect-100-continue.aspx

如果这不起作用另一个资源:http ://geekswithblogs.net/Denis/archive/2005/08/16/50365.aspx表明许多人已经通过将他们的请求制作为 HTTP 1.0 请求来解决:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(wsHost);
webRequest.KeepAlive = false;
webRequest.ProtocolVersion=HttpVersion.Version10;
于 2012-11-02T01:41:03.813 回答