我正在尝试从网址获得响应,但有时我会得到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
答案 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)";