Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#System.Net.WebException:&x27;尝试了太多的自动重定向;_C#_Zip_Webclient - Fatal编程技术网

C#System.Net.WebException:&x27;尝试了太多的自动重定向;

C#System.Net.WebException:&x27;尝试了太多的自动重定向;,c#,zip,webclient,C#,Zip,Webclient,我想使用webclient下载一个68kb的zip文件,但出现错误: C#System.Net.WebException:“尝试了太多的自动重定向。” 关于这篇文章是一篇重复的文章: 解决方案解释如下: 不要让下面的代码正常工作并下载zip文件。 如何编辑以更好地解释? 我的代码: var url_from = "http://www1.caixa.gov.br/listaweb/Lista_imoveis_RJ.zip"; var _to = @"F:\folder\f

我想使用webclient下载一个68kb的zip文件,但出现错误: C#System.Net.WebException:“尝试了太多的自动重定向。”

关于这篇文章是一篇重复的文章: 解决方案解释如下: 不要让下面的代码正常工作并下载zip文件。 如何编辑以更好地解释?

我的代码:

var url_from = "http://www1.caixa.gov.br/listaweb/Lista_imoveis_RJ.zip";
            var _to = @"F:\folder\file.zip";

            using (var client = new WebClient())
            {
                client.DownloadFile(url_from, _to);
            }
我也尝试过异步方式,但生成的是空zip文件。 这样地:
这是:

这是由错误的服务器实现造成的。如果使用Fiddler,您将看到服务器将HTTPS和HTTP连接重定向到同一HTTP url,并添加
security=true
cookie

通过HTTP调用特别有趣:

  • 第一个HTTP重定向到HTTPS URL
  • HTTPS使用
    security=true
    cookie重定向回原始HTTP
  • 如果cookie不在那里,循环将再次启动
  • 这意味着:

    • 没有安全措施。任何东西都可以拦截该调用并更改或替换文件的内容。希望您不要尝试通过WiFi下载此文件
    • 除非您存储cookie或自己添加cookie,否则服务器将导致无限重定向循环
    WebClient
    无法存储cookie。这是一个过时的类,当下载页面和文件是所有需要的时候创建的。它的所有功能以及更多功能都由HttpClient类提供

    不过在这种情况下,您可以自己添加cookie作为头,避免重定向,并且仍然通过HTTPS下载文件

    WebClient
    是一个过时的类。它是为简单的文件和页面请求而创建的

    var url_from = "https://www1.caixa.gov.br/listaweb/Lista_imoveis_RJ.zip";
    using (var client = new System.Net.WebClient())
    {
        client.Headers.Add(System.Net.HttpRequestHeader.Cookie, "security=true");
        client.DownloadFile(url_from, _to);
    }
    

    这将导致一次调用并通过HTTP下载文件,这是由错误的服务器实现造成的。如果使用Fiddler,您将看到服务器将HTTPS和HTTP连接重定向到同一HTTP url,并添加
    security=true
    cookie

    通过HTTP调用特别有趣:

  • 第一个HTTP重定向到HTTPS URL
  • HTTPS使用
    security=true
    cookie重定向回原始HTTP
  • 如果cookie不在那里,循环将再次启动
  • 这意味着:

    • 没有安全措施。任何东西都可以拦截该调用并更改或替换文件的内容。希望您不要尝试通过WiFi下载此文件
    • 除非您存储cookie或自己添加cookie,否则服务器将导致无限重定向循环
    WebClient
    无法存储cookie。这是一个过时的类,当下载页面和文件是所有需要的时候创建的。它的所有功能以及更多功能都由HttpClient类提供

    不过在这种情况下,您可以自己添加cookie作为头,避免重定向,并且仍然通过HTTPS下载文件

    WebClient
    是一个过时的类。它是为简单的文件和页面请求而创建的

    var url_from = "https://www1.caixa.gov.br/listaweb/Lista_imoveis_RJ.zip";
    using (var client = new System.Net.WebClient())
    {
        client.Headers.Add(System.Net.HttpRequestHeader.Cookie, "security=true");
        client.DownloadFile(url_from, _to);
    }
    

    这将导致一次调用,并通过HTTP下载文件。重复的是重复的。重定向与异步或文件类型无关。服务器向您的客户端发送了如此多的302个响应,一旦达到重定向限制,它就会放弃。可能服务器中存在错误,或者您需要提供证书如果您在浏览器中尝试该链接,您将看到您被重定向到
    https:
    URL。试试这个,而不是http:。出于安全原因,所有站点都在切换到
    https:
    ,因此您最好避免浪费
    http:
    callI尝试使用https和geve同样的错误。System.Net.WebException:“自动重定向尝试次数过多。”这是一个服务器错误,也是一个非常不安全的实现-HTTPS和HTTP请求都被重定向到HTTP,并添加了
    security=true
    cookie。好事情是没有黑客会想到这一点,截获并更改该zip文件的内容!复制品是复制品。重定向与异步或文件类型无关。服务器向您的客户端发送了如此多的302个响应,一旦达到重定向限制,它就会放弃。可能服务器中存在错误,或者您需要提供证书如果您在浏览器中尝试该链接,您将看到您被重定向到
    https:
    URL。试试这个,而不是http:。出于安全原因,所有站点都在切换到
    https:
    ,因此您最好避免浪费
    http:
    callI尝试使用https和geve同样的错误。System.Net.WebException:“自动重定向尝试次数过多。”这是一个服务器错误,也是一个非常不安全的实现-HTTPS和HTTP请求都被重定向到HTTP,并添加了
    security=true
    cookie。好事情是没有黑客会想到这一点,截获并更改该zip文件的内容!非常感谢你。这篇文章的标题似乎重复了。你的建议很简单,我会帮你很多忙。谢谢在{client.Headers.Add}行代码的adition之后工作。伟大的分析!非常感谢你。这篇文章的标题似乎重复了。你的建议很简单,我会帮你很多忙。谢谢在{client.Headers.Add}行代码的adition之后工作。伟大的分析!