GetResponseでタイムアウトを取得せずにPOSTで大きな文字列(私の場合はBLOBでXML)をアップロードするにはどうすればよいですか?C#:WebRequest経由で大きな文字列をPOSTする方法は?
タイムアウトを変更すると役立ちますが、これは実際の解決策ではありません。 サーバが本当に死んでいるか、POSTが中断した場合は、極端に大きなタイムアウトを待たなければなりません。
HttpWebRequest webRequest = null;
string response = "";
byte[] bytes = Encoding.UTF8.GetBytes(xml);
try
{
webRequest = (HttpWebRequest)WebRequest.Create("http://" + this.host + ":" + this.port);
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
webRequest.Timeout = 5000;
webRequest.ContentLength = bytes.Length;
using (Stream requeststream = webRequest.GetRequestStream())
{
requeststream.Write(bytes, 0, bytes.Length);
requeststream.Close();
}
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
{
using (StreamReader sr = new StreamReader(webResponse.GetResponseStream()))
{
response = sr.ReadToEnd().Trim();
sr.Close();
}
webResponse.Close();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
return response;
アプリケーションを設計する必要があります。 –
私の話題は同じです。 「プラットフォーム」がそれをサポートしていないことが分かったら、別の方法でそれを試してみてください。それ以外の場合は、@Marc Gravellのgzip圧縮と制限付きアップロード数のアプローチに行きます。 –