HttpWebException操作已超时

时间:2017-06-14 19:15:52

标签: c#

我遇到第一个请求的问题,随后随着时间的推移,我的客户端正在运行超时,http超时设置为5秒。我有3个其他客户端在其他未失败的计算机上运行。这台机器是Windows XP,有点慢,但似乎这种情况发生得太频繁了。在这些情况下,服务器甚至不会接收连接尝试。下面的代码在一个带有monitor.wait的循环中运行,因此它每10秒轮询一次。我一开始以为我没有正确处理连接,但看起来我似乎是这样。我无法在这台机器上运行调试器(它不是我的机器),所以我很难找到问题。看起来客户端有时甚至太慢而无法打开连接。

try
{
    Uri targetUri = new Uri(urlFormatted.ToString());
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri);
    request.Method = "GET";
    request.Timeout = 10000;
    WriteInfo(this.GetType(), "Requesting URL: " + urlFormatted.ToString());
    response = (HttpWebResponse)request.GetResponse();
    break;
}
catch (System.Net.WebException ex)
{
    if (ex.Status == WebExceptionStatus.ProtocolError)
    {
        response = (HttpWebResponse)ex.Response;
        logger.Error("Http request failed with errorcode:" + (int)response.StatusCode);
    }
    logger.Error("Error connecting to [" + server + "]", ex);
    if (ex.InnerException != null)
    {
        responseString = ex.InnerException.Message;
    }
    else
    {
        responseString = ex.ToString();
    }
}

if (response != null)
{
    try
    {
        //Response handling
    }
    catch (Exception ex)
    {
        //errorhandling
    }
    finally
    {
        response.Close();
        response.Dispose();
    }
}

有没有办法获得更多信息?似乎例外只是在说"操作已超时",这并没有给我很多东西。在我的调试机器上,我可以通过关闭我的服务器获得连接被拒绝的消息,但是没有这样的,服务器永远不会收到请求。

另请注意:其他机器都是Windows 7,而且更加强大。它们都安装了相同的.net库。

更多信息:

  

netstat -a 1 -n -p tcp

在尝试连接但获取操作超时消息时根本不显示连接。这看起来很怪异。它实际上并没有尝试连接。它确实显示它何时正确建立。

0 个答案:

没有答案