1

私は POST と GET の WebRequest を送信して、インターネットがダウンしている期間が長くなるのをサポートする必要があります。アイデアは、失敗した (タイムアウトした) Web リクエストをキューに入れ、インターネットが再び稼働し、キューに入れられたすべての WebRequest が送信されるまで、定期的に再送信を試みることです。

ただし、古い WebRequest をそのまま再利用することはできないようです。もう一度設定する必要がありますか?

IAsyncResult result = request.BeginGetResponse (o => {
        callCallback (o);
}, state);

リクエストが次を使用してセットアップされたとき:

var request = HttpWebRequest.Create (String.Format (@"{0}/{1}", baseServiceUrl, path)); 
request.Method = "GET";
request.ContentType = "application/xml; charset=UTF-8";
request.Headers.Add ("Authority", account.Session);
return request;

それは正常に動作します。しかし、タイムアウト (およびrequest.Abort ();)の後BeginGetResponse()、同じ webrequest を呼び出すとフリーズします。

4

1 に答える 1

1

BeginGetResponse()同じ で複数回呼び出すことはできませんHttpWebRequest。それが .NET でサポートされているかどうかはわかりませんが、Mono の実装では不可能です (そして、簡単に変更できるものではありません)。

サーバーから切断せずに HttpWebRequest を再利用できますか?も参照してください。- 基礎となるネットワーク接続が再利用されます。

于 2013-03-07T18:47:15.357 に答える