1

このメソッドを使用してPOSTリクエストを送信するのはこれが初めてではなく、問題は発生しませんでした。

    public static Stream SendPostRequest(Uri uri, byte[] postData)
    {
        var request = WebRequest.Create(uri);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = postData.Length;
        Stream requestStream = request.GetRequestStream();
        requestStream.Write(postData, 0, postData.Length);
        requestStream.Close();
        return request.GetResponse().GetResponseStream();
    }

request.GetRequestStream()でSystem.Net.WebExceptionが発生します:基になる接続が閉じられました:送信時に予期しないエラーが発生しました。
さらに興味深いことに、一部のマシンでは完全に機能しますが、私のマシン(Windows 7 Beta)と本番サーバー(Windows Server 2008)では機能しません。詳しくは:


動作-WindowsXp - .NET2.0 動作-WindowsXp -
.NET3.5動作-WindowsServer2003-.NET3.0 動作しない-WindowsVista-.NET3.5動作しない-WindowsServer2008- .NET3.5動作しないt work-Windows 7 Beta-.NET 3.5 SP1


試した:

  • ここからたくさんのもの、何も助けにはならなかった。
  • WebClientを使用しても、何も変更されていません。
  • これらのオプションを微調整しましたが、顕著な違いはありませんでした。
  • WireSharkを試しました。非常に優れたツールです。

[解決しました。ちょっと]
言及するのを忘れましたが、Uriはhttpsでした... httpを試してみましたが、うまくいきました。信じられない、早くはやらなかった…
それでも、誰かがこの状況全体に光を当ててくれたら幸いです。

4

3 に答える 3

1

私の最初の攻撃計画は、WireSharkを使用して、それぞれのケースでネットワーク レベルで何が起こっているかを確認することです。各マシンが何を送信しているかを確認します。

また、オペレーティング システム間の違いにも注目されましたが、すべてのシステムにまったく同じバージョンの .NET (SP まで) がインストールされていますか?

于 2009-03-09T09:24:01.480 に答える
1

GET は機能しますか? おそらく、プロキシ設定の問題 (proxycfgなど) です。

また、物事を単純化する(未知数の数を減らす)ためにWebClient、投稿を行うために使用することを検討してください:

using (WebClient client = new WebClient())
{
    client.Headers.Add("content-type","application/x-www-form-urlencoded");
    client.UploadData(address, data);
    // or more simply
    client.UploadValues(address, nameValuePairs);
}
于 2009-03-09T09:33:15.357 に答える
0

次のオプションの 1 つまたは複数を微調整してみてください。

  • 送信チャック
  • AllowAutoRedirect
  • TransferEncoding

また、さまざまな構成でそれらの違いに注意してください。

于 2009-03-09T12:29:26.260 に答える