如何使用asp.net内核从远程服务器下载文件



我有一个asp.net核心3应用程序。

我尝试从服务器下载一个日志文件,地址为:123.456.789。

需要注意的几件事:

  • 地址123.456.789。在我看来没有那么有效,希望只是你发布的一个随机地址
  • 异常发生在您对应用程序执行的请求的HttpContext上,而不是您对123.456.789的请求。这里基本上是失败的&quot_contextAccessor.HttpContext.Session.GetString("App_Data"(

因此,请确保获得存储文件的正确路径

我建议您首先创建一个小型控制台应用程序以在本地下载文件(将其保存到C:\Temp\file.txt(,一旦您完成了将其与webapi集成的工作,请找到正确的方法来检索AppData文件夹(不应处于会话中(

您想在这里做的是:

  • 使用HttpClient而不是WebClientHttpClient在每个方式
  • 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();
}

相关内容

  • 没有找到相关文章

最新更新