无法捕获webresponse异常

时间:2013-12-27 18:36:47

标签: c# .net vb.net

我正在尝试从网址获得响应,但有时我会得到502错误的gatway异常响应,这没关系,问题是我的以下代码似乎无法捕获该异常由于某种原因。所以每次VS都必须弹出异常“Web异常:远程服务器返回错误:(502)Bad Gateway ..”

 private string Query(string url)
    {
        var request = WebRequest.Create(new Uri(url)) as HttpWebRequest;
        var resString = "";
        if (request != null)
        {
            request.Proxy = WebRequest.DefaultWebProxy;

            request.Proxy.Credentials = CredentialCache.DefaultCredentials;

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

                 }

                var resStream = response.GetResponseStream();
                if (resStream != null)
                {
                    var resStreamReader = new StreamReader(resStream);
                    resString = resStreamReader.ReadToEnd();
                }
            }
            catch (Exception )
            {
            }
        }
        return resString;
    }

我认为以下应该捕获异常并处理它而不做任何事情,但它没有,所以每次VS弹出异常消息,任何想法?

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

                 }

因为单个catch子句不起作用,所以我在测试时添加了很多,你可以看到。

以下行抛出异常

response = request.GetResponse();

我使用的是vs2010和.net 3.5

1 个答案:

答案 0 :(得分:1)

502错误的网关异常是一般异常,也可能存在潜在的问题。

因此,最好不要进行常规异常处理,处理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)";