C# 为什么HttpClient不允许自动重定向?

C# 为什么HttpClient不允许自动重定向?,c#,asp.net,.net,httpclient,C#,Asp.net,.net,Httpclient,我正在尝试用不同的用户代理爬网一些域。我的爬虫程序工作正常,当一个域没有SSL证书且不安全时就会出现问题,在这种情况下,我没有得到任何关于HttpClient的响应。要跳过这一点,我使用HttpHandler,并自己设置证书。 通过这个解决方案,我得到了所有这些域的301,感觉我的AllowAutoRedirect是假的,但事实并非如此。我尝试将MaxAutomaticDirections分配给5,但效果并不理想 这是我的密码: public Task<int> Crawl(stri

我正在尝试用不同的用户代理爬网一些域。我的爬虫程序工作正常,当一个域没有SSL证书且不安全时就会出现问题,在这种情况下,我没有得到任何关于
HttpClient
的响应。要跳过这一点,我使用
HttpHandler
,并自己设置证书。 通过这个解决方案,我得到了所有这些域的301,感觉我的
AllowAutoRedirect
是假的,但事实并非如此。我尝试将MaxAutomaticDirections分配给5,但效果并不理想

这是我的密码:

public Task<int> Crawl(string userAgent, string url)
{
    var handler = new HttpClientHandler();
    handler.ClientCertificateOptions = ClientCertificateOption.Manual;
    handler.ServerCertificateCustomValidationCallback =
        (httpRequestMessage, cert, cetChain, policyErrors) =>
    {
        return true;
    };

    var httpClient = new HttpClient(handler);

    httpClient.DefaultRequestHeaders.Add("User-Agent", userAgent);


    var statusCode = (int)(await httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Get, URL))).StatusCode;

    return statusCode;
}
公共任务爬网(字符串userAgent,字符串url)
{
var handler=new-HttpClientHandler();
handler.ClientCertificateOptions=ClientCertificateOptions.Manual;
handler.ServerCertificateCustomValidationCallback=
(httpRequestMessage、cert、cetChain、policyErrors)=>
{
返回true;
};
var httpClient=新的httpClient(处理程序);
httpClient.DefaultRequestHeaders.Add(“用户代理”,userAgent);
var statusCode=(int)(等待httpClient.SendAsync(新的HttpRequestMessage(HttpMethod.Get,URL))).statusCode;
返回状态码;
}

我试图爬网的域没有任何SSL证书,HttpClient被重定向到HTTP版本。我的猜测是HttpClient不知道它被重定向到了哪里,所以没有继续


通过对HTTP版本的域进行爬网,我的问题得到了解决,例如:
http://example.com

您是否尝试过使用而不是
客户端认证选项。手动
?您可能想看看