WebClient .com и .ru

123
09 декабря 2019, 09:10

При запуске приложения, срабатывает апдейтер. Подключение идет через WebClient. При BaseAdress = "http://Site.ru" выдает ошибку "Значение не может быть неопределенным. Имя параметра source", если же BaseAdress = "http://Site.com" то пишет что просто не может подключиться. Я так понимаю что под source подразумевается именно BaseAdress или же в другом проблема, потому что строка с хедерами возвращается клиенту.. Не может же быть такое что из-за домена проблема :D

Пример кода:

private void Download()
{
    SafeInvoke(delegate
    {
        actionLabel.Text = "Получаю список файлов...";
    });
    WebClient webClient = new WebClient
    {
        BaseAddress = "http://site.ru"
    };
    try
    {
        string result = webClient.DownloadStringTaskAsync("/Files/").Result;
        Queue<QueuedFile> queue = new Queue<QueuedFile>();
        IEnumerable<FileData> enumerable = from f in new JavaScriptSerializer().Deserialize<IEnumerable<FileData>>(result)
                                           orderby f.RelativePath.ToLower() == "app.exe"
                                           where !SkippedFiles.Contains(f.RelativePath, StringComparer.OrdinalIgnoreCase)
                                           select f;
        webClient.DownloadProgressChanged += Client_DownloadProgressChanged;
        foreach (FileData item in enumerable)
        {
            string text = Path.Combine(Directory.GetCurrentDirectory(), item.RelativePath);
            Directory.CreateDirectory(Path.GetDirectoryName(text));
            if (NeedUpdate(text, item.Hash))
            {
                queue.Enqueue(new QueuedFile(item.RelativePath, text));
            }
        }
        while (queue.Any())
        {
            QueuedFile file = queue.Dequeue();
            SafeInvoke(delegate
            {
                actionLabel.Text = $"[{queue.Count}] {"Загружаю"} {file.RelativePath}";
            });
            byte[] result2 = webClient.DownloadDataTaskAsync($"/Files/Update?path={file.RelativePath}").Result;
            if (file.RelativePath.ToLower() == "app.exe")
            {
                BeginSelfUpdate(result2);
            }
            else
            {
                File.WriteAllBytes(file.DestPath, result2);
            }
        }
    }
    catch (Exception ex)
    {
        string msg = ex.Message;
        AggregateException ex2;
        if ((ex2 = (ex as AggregateException)) != null)
        {
            foreach (Exception innerException in ex2.Flatten().InnerExceptions)
            {
                msg = msg + "\r\n" + innerException.Message;
            }
        }
        SafeInvoke(delegate
        {
            msg = msg + "\r\n\r\n" + "Продолжить без обновления?";
            if (MessageBox.Show(this, msg, "app", MessageBoxButtons.YesNo, MessageBoxIcon.Hand) == DialogResult.No)
            {
                Environment.Exit(0);
            }
        });
    }
    finally
    {
        webClient.Dispose();
        webClient.DownloadProgressChanged -= Client_DownloadProgressChanged;
    }
    Application.Exit();
}
Answer 1

Проблема была в слишком быстром переходом к другой команде. Решение проблемы:

        string result = null;
        while (result == null)
        {
            result = webClient.DownloadStringTaskAsync("/Files").Result;
        }    
READ ALSO
Вывод своего представление в поле Details

Вывод своего представление в поле Details

Есть некое приложение, приложение выводит список документов, и должно уметь показывать прикрепленные сканы оригиналов документовПопытался...

142
Столкновение с повёрнутым спрайтом

Столкновение с повёрнутым спрайтом

Я делаю игру, в которой шарик должен лететь к повёрнутой платформе и отталкиваться от её поверхностиУ меня есть код в методе Update, который...

131
Отправить POST запрос с помощью PHP

Отправить POST запрос с помощью PHP

нужно на данный URL https://streamingvk

151
Вывод даты mysql php

Вывод даты mysql php

Подскажите пожалуйста, как вывести дату в input type="date" из бд mysqlТак дата не выводится <input type="date" class="form-control" name="date_birthday" value="<?php echo $row['date_birthday'];...

125