Загрузка файлов, которая работала в .NET 2.0, теперь работает только в .NET4.6 - PullRequest
0 голосов
/ 27 июня 2018

Приведенный ниже код работал отлично в течение многих лет, используя только .net 2.0. Теперь он остановился и будет работать только с .net 4.6 или выше. Осталось неизменным. Отладчик работает поверх

client.DownloadFileAsync (новый Uri (sourceURL), пункт назначения);

линия. Но больше ничего не скачивается.

using System;
using System.ComponentModel;
using System.Net;
using System.Windows.Forms;

namespace NewTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            StartDownload();
        }

        private void StartDownload()
        {
            using (WebClient client = new WebClient())
            {
                client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
                client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);

                string destination = "Tools.exe";
                string sourceURL = "https://mysiteexample.com/download/Tools.exe";

                client.DownloadFileAsync(new Uri(sourceURL), destination);
            }
        }

        void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }

        void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            MessageBox.Show("Done");
        }
    }
}

1 Ответ

0 голосов
/ 28 июня 2018

Благодаря Хенку, я смог получить больше информации о моей проблеме. Мой провайдер начинает требовать TLS 1.2. Поэтому мне пришлось добавить следующий код. Работает нормально сейчас.

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

Итак, полученный код

        using (WebClient client = new WebClient())
        {
            client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
            client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);

            string destination = "Tools.exe";
            string sourceURL = "https://mysiteexample.com/download/Tools.exe";

            ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;                
            client.DownloadFileAsync(new Uri(sourceURL), destination);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...