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