【问题标题】:WebClient downloads corrupted file in windows 8.1WebClient 在 Windows 8.1 中下载损坏的文件
【发布时间】:2014-10-05 19:02:15
【问题描述】:

我有一个从指定 URL 下载文件的简单代码,它在 Windows 7 中运行良好,但是当我在 Windows 8.1 中运行它时,下载的文件已损坏。问题出在哪里?

这是代码和网址:

WebClient wClient = new WebClient();
wClient.DownloadFile(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0", "dl.xlsx");

【问题讨论】:

  • 在 Windows 8 上的 LINQPad 中尝试了此代码,它按预期工作,下载了可以在 Google Docs 中打开的文件副本。文件损坏可能是由其他原因引起的。
  • 这个文件是一个带有表格和一些记录的 Excel 文件,如果你把 URL 放在任何浏览器或下载管理器中,他们会毫无问题地下载它,而且代码在 windows 7 中运行良好,但它会下载Windows 8.1 中的文件损坏,我只是想知道为什么代码在另一个 Windows 中不能做同样的事情,我已经在 2 台装有 Windows 8.1 的不同 PC 上尝试过!

标签: c# windows webclient


【解决方案1】:

感谢usr的帮助,我找到了问题,服务器以GZip格式返回文件,所以我修改了代码:

public class WebDownload : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
        if (request != null)
        {
            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
        }
        return request;
    }
}

但我仍然不知道为什么我的初始代码在我的 PC 上运行没有问题!

【讨论】:

  • 这也适用于通过 rest api 从 tfs(团队基础服务器)下载附件。 (Windows 10)谢谢!
【解决方案2】:

此网址未提供您所期望的内容。使用 Fiddler 找出 HTTP 级别发生的情况。您需要找出服务器需要什么作为输入来响应正确的内容。

【讨论】:

    猜你喜欢
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 2015-07-14
    • 2015-07-16
    • 2017-12-04
    相关资源
    最近更新 更多