C# 400使用HttpWebRequest和HttpWebResponse检查网站是否有效时出错为什么?

C# 400使用HttpWebRequest和HttpWebResponse检查网站是否有效时出错为什么?,c#,paypal,httprequest,asp.net-4.0,httpresponse,C#,Paypal,Httprequest,Asp.net 4.0,Httpresponse,在此处使用以下代码确定url是否有效: public bool UrlIsValid(string url) { if(!url.ToLower().StartsWith("http://") && !url.ToLower().StartsWith("https://")) { url = "http://" + url; } try { HttpWebRequest request = HttpWebR

在此处使用以下代码确定url是否有效:

public bool UrlIsValid(string url)
{
    if(!url.ToLower().StartsWith("http://") && !url.ToLower().StartsWith("https://"))
    {
        url = "http://" + url;
    }

    try
    {
        HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
        request.Timeout = 5000; //set the timeout to 5 seconds to keep the user from waiting too long for the page to load
        request.Method = "HEAD"; //Get only the header information -- no need to download any content

        HttpWebResponse response = request.GetResponse() as HttpWebResponse;

        int statusCode = (int)response.StatusCode;
        if (statusCode >= 100 && statusCode < 400) //Good requests
        {
            return true;
        }
        else if (statusCode >= 500 && statusCode <= 510) //Server Errors
        {
            log.Warn(String.Format("The remote server has thrown an internal error. Url is not valid: {0}", url));
            return false;
        }
    }
    catch (WebException ex)
    {
        if (ex.Status == WebExceptionStatus.ProtocolError) //400 errors
        {
            log.Warn(String.Format("400 Error logged: {0}", url));
            return false;
        }
        else
        {
            log.Warn(String.Format("Unhandled status [{0}] returned for url: {1}", ex.Status, url), ex);
        }
    }
    catch (Exception ex)
    {
        log.Error(String.Format("Could not test url {0}.", url), ex);
    }
    return false;
}
public bool url有效(字符串url)
{
如果(!url.ToLower()
{
url=“http://”+url;
}
尝试
{
HttpWebRequest request=HttpWebRequest.Create(url)为HttpWebRequest;
request.Timeout=5000;//将超时设置为5秒,以避免用户等待页面加载的时间过长
request.Method=“HEAD”//只获取标题信息——无需下载任何内容
HttpWebResponse=request.GetResponse()作为HttpWebResponse;
int statusCode=(int)response.statusCode;
if(statusCode>=100&&statusCode<400)//良好的请求
{
返回true;
}

否则,如果(statusCode>=500&&statusCode您的代码适用于其他站点

PayPal不得响应HEAD请求

返回的System.Net.WebException显示“未处理”


解决这一问题的最简单方法就是使用GET。

如果使用
GET
我需要更改很多代码,还是只需在代码中从
HEAD
切换到
GET
,request.Method=“GET”就可以了。