4

Webサービスを介してバイト配列の画像を使用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 プロトコルによると、このヘッダーが送信されると、最初の要求でフォーム データが送信されません。代わりに、このヘッダーは Web サーバーに送信され、正しく実装されている場合、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 に答える