下载处理程序无法从GitHub URL下载文件

时间:2018-03-02 03:18:33

标签: c# wpf github

我的程序有一个更新按钮,可以从GitHub下载最新版本的zip。

它工作了好几个月,但现在进度条不再更新,也没有从GitHub版本URL下载文件。

但是,我使用Google云端硬盘网址对其进行了测试,但是它有效,但网址命名约定与此项目不兼容。

有没有办法绕过代码,或者这是否与GitHub服务器规则有关?

Update Window

下载处理程序

// Progress Changed
//
public void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
    // Progress Bar
    this.Dispatcher.BeginInvoke((Action)(() =>
    {
        double bytesIn = double.Parse(e.BytesReceived.ToString());
        double totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
        double percentage = bytesIn / totalBytes * 100;
        this.progressBar.Value = int.Parse(Math.Truncate(percentage).ToString());
    }));
}


// Download Complete
//
public void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
    // Set the waiter Release
    // Must be here
    this.Dispatcher.BeginInvoke((Action)(() =>
    {
        waiter.Set();
    }));
}

下载方法

在实际代码中,版本号是一个在URL中动态更改的字符串。

不起作用:
https://github.com/MattMcManis/Glow/releases/download/v0.0.5.4-alpha/Glow.zip

使用:
https://drive.google.com/uc?authuser=0&id=1_7hzLR4FFZXK6qr2sP0uOleeB2GgtghE&export=download

public void StartDownload()
{
    // Start New Thread
    Thread worker = new Thread(() =>
    {
        waiter = new ManualResetEvent(false);

        Uri downloadUrl = new Uri("https://github.com/MattMcManis/Glow/releases/download/v0.0.5.4-alpha/Glow.zip);

        //Async
        wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
        wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted);
        wc.DownloadFileAsync(downloadUrl, tempDir + "Glow.zip");

        // Wait for Download to finish
        waiter.WaitOne();
    });

    // Start Download Thread
    worker.Start();
}

2 个答案:

答案 0 :(得分:2)

2018年2月22日GitHub disabled certain depreciated algorithms。这会导致您遇到的TLS错误。

修复(如评论中所述)仅允许WebClient使用TLS1.2或更高版本进行连接。为此,请将ServicePointManager.SecurityProtocol设置为SecurityProtocolType.Tls12或更高。

我不确定为什么你的进度条会显示"一半"在停止之前下载,在开始下载时会立即弹出此错误。

答案 1 :(得分:0)

您只需要将URL从github转换为原始文件即可。 像这样:

https://raw.githubusercontent.com/MattMcManis/Glow/releases/download/v0.0.5.4-alpha/Glow.zip