파일을 다운로드하고 "백그라운드"방식으로 디스크에 저장하는 효율적인 방법은 mvc 컨트롤러에서 현재 실행을 차단하지 않고 있습니까? 현재Syncronous asp.net 컨트롤러에서 Task.Run 사용
I 다음 예제 코드 작업이 : 나는 당신이 (작업자 스레드에서) 서버에 Task.Run를 사용해서는 안 여러 장소를 읽고 그래서이 예제의 경우 궁금 해서요
public ActionResult Index()
{
InitiateDownload();
var model = GetModel();
return View(model);
}
private void InitiateDownload()
{
Task.Run(() => DownloadAndSaveFileAsync()).ConfigureAwait(false);
}
private async Task DownloadAndSaveFileAsync()
{
var response = await GetResponse();
using (var fileStream = new FileStream("c:\\file.zip", FileMode.Create, FileAccess.Write, FileShare.None))
{
await response.Content.CopyToAsync(fileStream).ConfigureAwait(false);
}
}
public async Task<HttpResponseMessage> GetResponse()
{
var client = new HttpClient();
client.BaseAddress = new Uri("http://someUrl.com");
return await client.GetAsync("someResourceEndPoint").ConfigureAwait(false);
}
을 (예 : 매초마다 10 건의 요청을받는 경우) 또는 신뢰할 수있는 방법인지, 아니면 그렇게 할 수있는 적절한 방법이있는 경우?
감사 MVC 컨트롤러의 동작의 현재 실행을 중단하지 않고
대기열을 사용하여 안전한 작업을 처리하십시오. – Ramie