1

HttpWebRequest を使用して別の Web サーバーを呼び出す ASP.NET Web アプリケーション (MVC3) があります。

いずれにせよ、リモート サーバーがダウンすると、タイムアウト エラーが発生し始めますが、これは当然のことです。

ただし、リモート サーバーが復旧すると、引き続きタイムアウト エラーが発生します。アプリケーション プールを更新すると問題は解決しますが、毎回アプリケーション プールを再起動する必要はありません。

不正なタイムアウト接続を保存している可能性のあるプーリングが進行中ですか? 接続がエラーをスローした場合、それは破棄され、次回は新しい接続が得られると期待していますが、そうではないようです.

コードは次のようになります。

var request = (HttpWebRequest)HttpWebRequest.Create(url);
int timeout = GetTimeout();
request.ReadWriteTimeout = timeout;

WebRequest.DefaultWebProxy = null; 

var asyncResult = request.BeginGetResponse(null, null);
bool complete = asyncResult.AsyncWaitHandle.WaitOne(timeout);
if (!complete)
{
    ThrowTimeoutError(url, timeout);
}
using (var webResponse = request.EndGetResponse(asyncResult))
{
    using (var responseStream = webResponse.GetResponseStream())
    {
        using (var responseStreamReader = new StreamReader(responseStream))
        {
            responseXml = responseStreamReader.ReadToEnd();
        }
    }
}
4

1 に答える 1