
今天突然出来了一个问题,URL地址调用导致程序卡死(原因是服务挂了,磁盘坏了)
然后想到了,再调用URL地址前先判断下地址是否有响应,这样不就可以解决问题了吗?
C# 代码:
/// <summary>
/// 检测URL地址是否可以访问
/// </summary>
/// <param name="strUrl">URL地址(可以不写http)</param>
/// <returns>返回OK</returns>
/// <example>UrlCheck("http://www.baidu.com")</example>
private bool UrlCheck(string strUrl)
{
if (!strUrl.Contains("http://") && !strUrl.Contains("https://"))
{
strUrl = "http://" + strUrl;
}
HttpWebRequest hwReq = null;
try
{
hwReq = (HttpWebRequest)WebRequest.Create(strUrl);
hwReq.Method = "HEAD";
hwReq.Timeout = ; //超时时间10秒
HttpWebResponse res = (HttpWebResponse)hwReq.GetResponse();
////此方法返回一个状态码。。状态码为200是为正常,异常时会返回错误信息。比如超时
return (res.StatusCode == HttpStatusCode.OK);
}
catch
{
return false;
}
finally
{
if (hwReq != null)
{
hwReq.Abort();
hwReq = null;
}
}
}