RequestSizeLimitAttribute вызывает исключение HttpRequestExceptionC#

Место общения программистов C#
Ответить
Anonymous
 RequestSizeLimitAttribute вызывает исключение HttpRequestException

Сообщение Anonymous »

Я создал простое приложение ASP.NET (пробовал NET 6 и 8) с одним API загрузки с атрибутом RequestSizeLimitAttribute.

Код: Выделить всё

[HttpPost(Name = "Upload")]
[RequestSizeLimit(100_000)]
public IActionResult Upload()
{
try
{
if (Request.Form.Files.Count != 1)
{
return new BadRequestResult();
}
return new OkResult();
}
catch (BadHttpRequestException ex)
{
if (ex.StatusCode == StatusCodes.Status413PayloadTooLarge)
return new StatusCodeResult(413);

return new StatusCodeResult(500);
}
}
Затем я создал приложение для вызова API загрузки:

Код: Выделить всё

HttpClient client = new HttpClient();
using var multiForm = new MultipartFormDataContent();

var fileContent = File.ReadAllBytes("[File Path Here]");
using MemoryStream ms = new MemoryStream(fileContent);

multiForm.Add(new StreamContent(ms), "file", "test.data");
var res = await client.PostAsync("https://localhost:7125/Upload", multiForm);
Когда я использую размер файла 250 КБ, все работает нормально и фильтр работает:

Код: Выделить всё

StatusCode: 413, ReasonPhrase: 'Payload Too Large', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
Connection: close
Date: Tue, 17 Dec 2024 14:32:03 GMT
Server: Kestrel
Transfer-Encoding: chunked
Content-Type: application/problem+json; charset=utf-8
}, Trailing Headers:
{
}
Но когда я использую файл большего размера (например, 15 МБ), я получаю такой ответ:

Код: Выделить всё

System.Net.Http.HttpRequestException
HResult=0x80131620
Message=Error while copying content to a stream.
Source=System.Net.Http
StackTrace:
at System.Net.Http.HttpContent.d.MoveNext()
at System.Net.Http.MultipartContent.d__24.MoveNext()
at System.Net.Http.HttpContent.d.MoveNext()
at System.Net.Http.HttpConnection.d__61.MoveNext()
at System.Net.Http.HttpConnection.d__57.MoveNext()
at System.Net.Http.HttpConnection.d__57.MoveNext()
at System.Net.Http.HttpConnectionPool.d__89.MoveNext()
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.RedirectHandler.d__4.MoveNext()
at System.Net.Http.HttpClient.d.MoveNext()
at Program.d__0.MoveNext() in C:\Users\pcroc\source\repos\UploadFileTester\UploadFileTester\Program.cs:line 8

Inner Exception 1:
IOException: Unable to write data to the transport connection: Connessione in corso interrotta forzatamente dall'host remoto..

Inner Exception 2:
SocketException: Connessione in corso interrotta forzatamente dall'host remoto.
Где моя ошибка?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... texception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»