C# 无法捕获webresponse异常

C# 无法捕获webresponse异常,c#,.net,vb.net,C#,.net,Vb.net,我试图从URL获取响应,但有时我会得到502个坏的gatway异常作为响应,这没关系,问题是我下面的代码似乎由于某种原因无法捕获该异常。因此,每次VS都必须弹出异常“Web异常:远程服务器返回错误:(502)坏网关…” 我认为下面的代码应该捕获异常并在不做任何事情的情况下处理它,但事实并非如此,所以每次VS都会弹出异常消息,有什么想法吗 try { response = request.GetRes

我试图从URL获取响应,但有时我会得到502个坏的gatway异常作为响应,这没关系,问题是我下面的代码似乎由于某种原因无法捕获该异常。因此,每次VS都必须弹出异常“Web异常:远程服务器返回错误:(502)坏网关…”

我认为下面的代码应该捕获异常并在不做任何事情的情况下处理它,但事实并非如此,所以每次VS都会弹出异常消息,有什么想法吗

            try
                {
                     response = request.GetResponse();
                }
                catch (Exception )
                {

                 }
由于单catch子句不起作用,所以我添加了很多,正如我在测试时看到的那个样

下面的行引发异常

response = request.GetResponse();

我使用的是vs2010和.net 3.5。坏网关异常是一个普遍的异常,也可能存在潜在的问题

因此,最好不要执行常规异常处理,而是处理web异常,并使用以下代码示例找出实际错误:

 try
 {
      response = request.GetResponse();
 }
 catch(WebException e)
 {
      if (e.Status == WebExceptionStatus.ProtocolError)
      {
          WebResponse resp = e.Response;
          using(StreamReader sr = new StreamReader(resp.GetResponseStream()))
          {
               Response.Write(sr.ReadToEnd());
          }
      }
 }
我怀疑您的潜在问题可能是“用户代理未被识别”,如果是这种情况,请尝试设置UserAgent,如

 request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";

当您调试这个程序时,哪一行抛出异常以及抛出了什么异常?它很可能正在工作。如果它捕捉到要响应的赋值,您将在下一条语句中得到一个
NullReferenceException
。更新的原始帖子为什么要忽略异常?因为此502错误是间歇性的,并且此查询处于循环中,所以对于同一url,如果失败一次,则无论何种异常,第二次尝试都将成功,捕获部分似乎没有捕获任何内容请通过添加请求进行检查。Method=“GET”;另外,请尝试删除代码中的外部try-catch块我按照您的建议做了,VS仍会给出异常消息:System.dll中发生了类型为“System.Net.WebException”的第一次意外异常其他信息:远程服务器返回了错误:(502)坏网关…..出于某些原因,它仍无法处理此异常因此,这意味着异常是由try之外的调用引发的,请将此try块中的所有代码仅移动一个catch-webexception块,如上所述。
 request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";