我用下面的两种方法都试了一下,都只能检测域名(如: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;
            }
        }

解决方案 »

  1.   


        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;
            }
        }
      

  2.   

            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;
                }
            }
    这里面的myRequest.Timeout = 100;设的时间长点应该就没问题了,至少我这暂时没问题。不过还是谢谢楼上的。