1

StreamWriter を使用して、WebRequest POST 経由で大量のデータ (30 MB 以上) を渡しています。ストリームは同時 IO 読み取りまたは書き込み操作をサポートしていませんというエラーで失敗します。エラー メッセージに反して、同時操作は実行していません。アプリはシングル スレッドであり、StreamWriter ロジックは非常に単純です。

string data = "......."; // 30mb+ of text

var webRequest = WebRequest.Create(someUrl);
webRequest.Method = "POST";
webRequest.ContentLength = data.Length;

using (var writer = new StreamWriter(webRequest.GetRequestStream()))
    writer.Write(data);

大量のデータが原因だと思います。大きなファイル ( [1][2] )をアップロードするときにこのエラーが発生する Team Foundation System ユーザーからこのエラーへの言及を見てきましたが、TFS の議論以外で大きなデータが原因として議論されているのを見たことはありません。

StreamWriter で本当に限界に達しているのでしょうか? このデータをストリーミングするより効率的な方法はありますか?

4

1 に答える 1

1

根本的な問題は、私の POST 要求が大きすぎて、ターゲット サーバーのmaxAllowedContentLength設定を超えていたことです。修正は、この設定の値を増やすことでした。

「同時IO」エラーが発生した理由はわかりませんが、設定したときにのみ発生しましたwebRequest.ContentLength。その行をコメントアウトすると、WebRequest がサーバーから 404 を受信したことがわかりました。これにより、最終的に maxAllowedContentLength の問題が発見されました。

于 2013-05-29T14:18:31.257 に答える