Как скачать файл с удаленного сервера с ядром asp. net? - PullRequest
0 голосов
/ 04 августа 2020

У меня есть приложение asp. net core 3.

И я пытаюсь загрузить файл журнала с сервера с адресом: 123.456.789.

Поэтому я пытаюсь это так:

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Вот что вы хотите сделать:

  • используйте HttpClient вместо WebClient. HttpClient - это поддержка во всех отношениях.
  • запись потока ответа от HttpClient ответа на FileStream
public async Task<IActionResult> UserLogs(string id)
{
    // Set reasonable IP so HttpClient won't fail
    string remoteFileUrl = "http://myuri.com/file.txt";
    // Not sure what's happening here. Make sure it's pointing to reasonable
    // location on machine.
    // string localFileName = Path.Combine(_contextAccessor.HttpContext.Session.GetString("App_Data"), "C:\\inetpub\\logs\\LogFiles\\W3SVC15\\u_ex200621");
    string localFileName = "C:\\downloads\\some_file.txt"

    // Injecting via ASP.NET depenency injection is recommended however
    var httpClient = new HttpClient();
    
    var httpResponse = await httpClient.GetAsync(remoteFileUrl);

    using (var fs = File.Create(localFileName)) 
    {
        httpResponse.Content.CopyToAsync(fs);
    }

    return View();
}
0 голосов
/ 04 августа 2020

Несколько замечаний:

  • Адрес 123.456.789. Мне кажется, это не так, надеюсь, это просто случайный адрес, который вы разместили
  • Исключение составляет HttpContext запроса, который вы выполняете для своего приложения, а не запрос, который вы отправляете к 123.456.789. В основном здесь не работает "_contextAccessor.HttpContext.Session.GetString (" App_Data ")"

Итак, убедитесь, что вы получили правильный путь, где хранить файл

Я рекомендую вам чтобы сначала создать небольшое консольное приложение для загрузки файла локально (сохраните его в C: \ Temp \ file.txt), как только у вас будет эта рабочая интеграция с webapi, найдите правильный способ получить папку AppData (которая должна не быть в сеансе)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...