C# 捕获HttpWebRequest超时

C# 捕获HttpWebRequest超时,c#,httpwebrequest,timeout,webrequest,httpwebresponse,C#,Httpwebrequest,Timeout,Webrequest,Httpwebresponse,这段代码运行得很好,但有时请求没有得到响应。当请求没有得到响应时,程序将挂起,然后最后会出现超时错误,导致程序崩溃。我现在要做的就是捕捉超时错误,以便处理它,但似乎没有任何东西捕捉到它。很可能是在GetRequestStream()中超时。。特别声明,如果请求的超时期限到期,它可能会抛出WebException 因此,在try/catch中包含这段代码,您应该能够捕获它 它很可能在GetRequestStream()中超时。特别声明,如果请求的超时期限到期,它可能会抛出WebException

这段代码运行得很好,但有时请求没有得到响应。当请求没有得到响应时,程序将挂起,然后最后会出现超时错误,导致程序崩溃。我现在要做的就是捕捉超时错误,以便处理它,但似乎没有任何东西捕捉到它。

很可能是在
GetRequestStream()中超时。
。特别声明,如果请求的超时期限到期,它可能会抛出
WebException


因此,在try/catch中包含这段代码,您应该能够捕获它

它很可能在
GetRequestStream()
中超时。特别声明,如果请求的超时期限到期,它可能会抛出
WebException

因此,在try/catch中包含这段代码,您应该能够捕获它

我想不管发生什么,超时时间都是“5000”。 如果你告诉它“超时为5秒”,它会在放弃之前尝试5秒。

我想不管发生什么,超时时间都是“5000”。
如果你告诉它“超时是5秒”,它会在放弃之前尝试5秒。

这是一个旧线程,但我今天也遇到了这个问题

我没有意识到的是,如果你有一个web服务,比如说,试图写入一个被锁定的文件。。。然后将代码放在一个简单的
try..catch
中是不够的

您必须有一个专门处理
WebExceptions
catch

try { ... }            
catch (System.Net.WebException sne)
        {
            MessageBox.Show(req.Timeout.ToString());
        }
我一直认为
WebException
Exception
的一种类型,因此这些异常会被这个
catch
处理程序捕获:

try
{
    //  Run your web service code
}
catch (WebException ex)
{
    //  Handle a WebException, such as trying to write to a "locked" file on the network
}
catch (Exception ex)
{
    //  Handle a regular Exception
}
没有

因此,为了避免代码抛出“请求超时”消息,而不知道是什么导致了这些消息,请记住添加第二个
捕获
处理程序

顺便说一句,在我的上,下面是我推荐的代码,它查找异常,并在响应头中返回它们:

catch (Exception ex)
{
    //  Handle a regular Exception
}

这是一个老话题,但我今天也谈到了这个问题

我没有意识到的是,如果你有一个web服务,比如说,试图写入一个被锁定的文件。。。然后将代码放在一个简单的
try..catch
中是不够的

您必须有一个专门处理
WebExceptions
catch

try { ... }            
catch (System.Net.WebException sne)
        {
            MessageBox.Show(req.Timeout.ToString());
        }
我一直认为
WebException
Exception
的一种类型,因此这些异常会被这个
catch
处理程序捕获:

try
{
    //  Run your web service code
}
catch (WebException ex)
{
    //  Handle a WebException, such as trying to write to a "locked" file on the network
}
catch (Exception ex)
{
    //  Handle a regular Exception
}
没有

因此,为了避免代码抛出“请求超时”消息,而不知道是什么导致了这些消息,请记住添加第二个
捕获
处理程序

顺便说一句,在我的上,下面是我推荐的代码,它查找异常,并在响应头中返回它们:

catch (Exception ex)
{
    //  Handle a regular Exception
}