2009-03-09 32 views
1

POSTリクエストの送信:System.Net.WebException

これは私がこのメソッドを使って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を使うと何も変わりません。
  • これらのoptionsを微調整しても、顕著な違いは見られませんでした。
  • 試したWireShark。非常に良いツールです。

[解けます。キンダー]
私は言及するのを忘れたが、ウリはhttpsだった...私はhttpを試み、それは働いた。信じられない、私は早くそれを試していない...
誰かがこの全体の状況に光を照らすなら、まだ、私は感謝します。

答えて

1

攻撃の最初の計画は、いずれの場合もネットワークレベルで何が起きているかを確認するためにWireSharkを使用することです。各マシンが送信しているものを参照してください。

また、オペレーティングシステムの違いに気付きましたが、それらはすべて同じバージョンの.NET(SPまで)がインストールされていますか?

+0

エントリのどれもそれを解決しませんでしたが、これが最も有用なので、それが受け入れられました。良い答えがあれば、私は別の答えを受け入れるでしょう。 –

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); 
} 
0

次の1つ以上のオプションを微調整してみてください。

  • をSendChucked
  • AllowAutoRedirect
  • TransferEncoding

また、さまざまな設定での違いを確認してください。

関連する問題