POSTリクエストの送信:System.Net.WebException
-
05-07-2019 - |
質問
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)では動作しません。詳細:
Works-Windows Xp-.NET 2.0
Works-Windows XP-.NET 3.5
Works-Windows Server 2003-.NET 3.0
動作しない-Windows Vista-.NET 3.5
動作しない-Windows Server 2008-.NET 3.5
動作しない-Windows 7 Beta-.NET 3.5 SP1
試行:
-
こちら、何も役に立たなかった。 - WebClient を使用しても変更はありません。
- これらのオプションを調整しましたが、しませんでした顕著な違いはありません。
- WireShark を試しました。非常に優れたツール。
[解決済み。ちょっと]
私は言及するのを忘れましたが、ウリはhttpsでした...私はhttpを試みました、そして、それは働きました。信じられない、早く試してなかった...
それでも、誰かがこの状況全体に光を当ててくれれば幸いです。
解決
攻撃の最初の計画は、 WireShark を使用して、各ケースでネットワークレベルで何が起こっているかを確認することです。各マシンが送信しているものを確認します。
また、オペレーティングシステムの違いに注意しましたが、それらはすべて.NET(SPまで)のまったく同じバージョンがインストールされていますか?
他のヒント
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);
}
次のオプションの1つ以上を調整してみてください。
- SendChucked
- AllowAutoRedirect
- TransferEncoding
また、さまざまな構成でそれらの違いに注意してください。