我用下面的两种方法都试了一下,都只能检测域名(如:http://www.365huati.com)。但是不能检测像这样的地址: http://v.sohu.com/20080918/n259624355.shtml 。请高手指点一下。谢谢了。
private bool UrlExistsUsingSockets(string url)
{
if (url.StartsWith("http://")) url = url.Remove(0, "http://".Length);
try
{
System.Net.IPHostEntry ipHost = System.Net.Dns.GetHostEntry(url);
return true;
}
catch (System.Net.Sockets.SocketException se)
{
System.Diagnostics.Trace.Write(se.Message);
return false;
}
}
private bool UrlExistsUsingHttpWebRequest(string url)
{
try
{
System.Net.HttpWebRequest myRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
myRequest.Method = "HEAD";
myRequest.Timeout = 100;
System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)myRequest.GetResponse();
return (res.StatusCode == System.Net.HttpStatusCode.OK);
}
catch (System.Net.WebException we)
{
System.Diagnostics.Trace.Write(we.Message);
return false;
}
}
private bool UrlExistsUsingSockets(string url)
{
if (url.StartsWith("http://")) url = url.Remove(0, "http://".Length);
try
{
System.Net.IPHostEntry ipHost = System.Net.Dns.GetHostEntry(url);
return true;
}
catch (System.Net.Sockets.SocketException se)
{
System.Diagnostics.Trace.Write(se.Message);
return false;
}
}
private bool UrlExistsUsingHttpWebRequest(string url)
{
try
{
System.Net.HttpWebRequest myRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
myRequest.Method = "HEAD";
myRequest.Timeout = 100;
System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)myRequest.GetResponse();
return (res.StatusCode == System.Net.HttpStatusCode.OK);
}
catch (System.Net.WebException we)
{
System.Diagnostics.Trace.Write(we.Message);
return false;
}
}
解决方案 »
- 关于母板页路径的奇怪问题
- 如何让订单序列号按照日志的形式生成,并且不能重复,防止并发
- 刚写了petshop4.0用例分析,请大侠指教一下。
- 如何在多行TextBox中输入文字时顶行时自动加入\r\n?
- GridView的templatefield 中插入2个textbox,如何获取这2个textbox的值?
- 。NET服务器部署问题,能否将DLL和ASPX页面部署在两台机器上
- asp.net访问网络映射问题
- 简单问题!!
- 执行有参数的SQL语句用字符串连起来好,还是用SqlCommand.parameters好?
- asp.net问题求助!十万火急,在线等待解答!
- 关于url rewriter 的奇怪问题! 急!!在线等!!
- 求信息采集软件 即思路(顶者有分)
private bool UrlExistsUsingHttpWebRequest(string url)
{
try
{
System.Net.HttpWebRequest myRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
myRequest.Method = "GET";
myRequest.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*";
myRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)";
System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)myRequest.GetResponse();
return (res.StatusCode == System.Net.HttpStatusCode.OK);
}
catch (System.Net.WebException we)
{
System.Diagnostics.Trace.Write(we.Message);
return false;
}
}
{
try
{
System.Net.HttpWebRequest myRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
myRequest.Method = "HEAD";
myRequest.Timeout = 100;
System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)myRequest.GetResponse();
return (res.StatusCode == System.Net.HttpStatusCode.OK);
}
catch (System.Net.WebException we)
{
System.Diagnostics.Trace.Write(we.Message);
return false;
}
}
这里面的myRequest.Timeout = 100;设的时间长点应该就没问题了,至少我这暂时没问题。不过还是谢谢楼上的。