안녕하세요. C# 콘솔 환경에서 HttpClient 클래스를 이용해서 서버에 파일을 업로드 하는데 이게 간혈적으로 (10번 시도시 약 4번은 실패) 오류가 발생되는데 혹시 오류나는 원인과 해결방법을 알고 계시다면 답변을 듣고 싶어 질문드려 봅니다.
제목에는 대용량이라고 했지만 그렇게 큰 용량도 아닙니다.
624메가바이트의 .zip의 압축파일 입니다.
코드는 다음과 같이 작성하였습니다.
var handler = new HttpClientHandler();
handler.AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate;
handler.ServerCertificateCustomValidationCallback = (_, __, ___, ____) => true;
handler.MaxRequestContentBufferSize = 2147483647;
var client = new HttpClient(handler);
client.DefaultRequestHeaders.ConnectionClose = true;
client.Timeout = TimeSpan.FromMinutes(30);
var content = new MultipartFormDataContent("NKdKd9Yk");
var fileStream = File.OpenRead(zipFilePath);
var fileContent = new StreamContent(fileStream, 100000);
content.Add(fileContent, "File", zipFileName);
Console.WriteLine("Sending file request to server...");
var response = await client.PostAsync(uploadUrl, content);
var responseContent = await response.Content.ReadAsStringAsync();
,netframework 4.x 버전의 콘솔 환경 입니다.
오류 내용은 client.PostAsync() 메서드에서 오류가 발생하고 있습니다.
Error occurred: 이 요청을 보내는 동안 오류가 발생했습니다.
Stack trace:
위치: System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
위치: System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
위치: System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
서버는 .NET 8인데
MaxRequestBodySize = long.MaxValue;
MultipartBodyLengthLimit = long.MaxValue;
모두 설정은 해둔 상태 입니다. (설정이 잘못됬으면 100% 오류가 났겠죠?)
*아! 참고로 콘솔은 1회성으로 한번 실행되고 프로세스가 완전히 종료 됩니다.