System. Net .WebClient () DownloadUsingWebClientAsyn c работает в .netcore 3.1, но не в .netcore 2.2 (за прокси-сервером) - PullRequest
0 голосов
/ 06 марта 2020

Я сделал PO C на своем офисном компьютере, чтобы загрузить zip-файл, распаковать и выполнить какой-то процесс. Я продемонстрировал это с помощью консольного приложения, однако для этого требуется приложение с go до azure функциями. Поэтому я убедился, что использую подходящую среду (.netcore 2.2), работающую в производстве. Это работает отлично, как и предполагалось.

Ниже приведен фрагмент кода для загрузки файла:

using System;
using System.IO;
using System.Net;
using System.Threading.Tasks;

namespace DownloadFile
{
    class Program
    {

        private static string url = @"http://somesite.com/somefile.dat";

        static async Task Main(string[] args)
        {
            try
            {
                Console.WriteLine("Downloading...");

                await DownloadUsingWebClientAsync(url, Path.Combine(Path.GetTempPath(), "avvdat.ini"));

                Console.WriteLine("Download complete");

            }
            catch(Exception ex)
            {
                Console.WriteLine("Error: {0}", ex.Message.ToString());
            }
            Console.Write("Press ENTER key to end");
            Console.ReadLine();
        }

        private static async Task DownloadUsingWebClientAsync(string url, string filePath)
        {
            using (var client = new WebClient())
            {
                await client.DownloadFileTaskAsync(url, Path.Combine(filePath));
            }
        }

    }
}

Когда я запускаю тот же код (консольное приложение) в виртуальной машине моего клиента, это происходит с ошибкой ошибка ниже (SS журнала ошибок)

enter image description here

Вскоре я понял, что виртуальные машины нашего клиента находятся за прокси и используют .pa c (файл сценария прокси в IE) для автоматического определения настроек.

enter image description here

Я внес небольшие изменения в код для использования настроек прокси

client.Proxy = new WebProxy("http://proxy.clientsite.com/internet_proxy.pac");
await client.DownloadFileTaskAsync(url, Path.Combine(filePath));

Это дает мне ошибку

enter image description here

Я уверен, что 404 не связан с URL-адресом для загрузки, поскольку он не изменился / исправлен.

Теперь, когда я изменил платформу на .netcore 3.1, код без настройки прокси работает.

Я не уверен, почему это так, но это должно быть 3.0, заботится о настройках прокси внутренне. Есть ли способ, которым я могу сделать это с помощью 2.2? потому что я еще не авторизован для обновления до 3.1

...