我们有一个 ASP.NET Web 应用程序 (MVC3),它使用 HttpWebRequest 调用另一个 Web 服务器。
无论如何,当远程服务器宕机时,我们开始收到超时错误,这是我们所预料的。
但是,当远程服务器恢复时,我们继续收到超时错误。刷新应用程序池解决了这个问题,但我们真的不希望每次都重新启动应用程序池。
是否存在可能存储错误超时连接的池?我的期望是,如果连接抛出错误,它会被处理掉,然后我们会在下一次得到一个新的连接,但情况似乎并非如此。
这是我们的代码的样子:
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();
}
}
}