RequestSizeLimitAttribute verursacht HttpRequestExceptionC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 RequestSizeLimitAttribute verursacht HttpRequestException

Post by Anonymous »

Ich habe eine einfache ASP.NET Core-Anwendung (ich habe .NET 6 und .NET 8 ausprobiert) mit einer einzigen Upload-API mit einem RequestSizeLimitAttribute erstellt.
[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);
}
}

Dann habe ich eine Anwendung erstellt, um diese Upload-API-Methode aufzurufen:
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);

Wenn ich eine Dateigröße von 250 KB verwende, funktioniert alles einwandfrei und der Filter funktioniert:
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:
{
}

Aber wenn ich eine größere Datei verwende (z. B. 15 MB), erhalte ich diese Antwort:

System.Net .Http.HttpRequestException

HResult=0x80131620

Message=Fehler beim Kopieren von Inhalten in einen 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()

bei System.Net.Http.HttpConnection.d__61.MoveNext()

bei System .Net.Http.HttpConnection.d__57.MoveNext()

at System.Net.Http.HttpConnection.d__57.MoveNext()

bei System.Net.Http.HttpConnectionPool.d__89.MoveNext()

bei System.Threading.Tasks. ValueTask`1.get_Result()

at System.Net.Http.RedirectHandler.d__4.MoveNext()

bei System.Net.Http.HttpClient.d.MoveNext()

bei Programm .d__0.MoveNext() in C:\Users\pcroc\source\repos\UploadFileTester\UploadFileTester\Program.cs:line 8
Innere Ausnahme 1:

IOException: Daten können nicht geschrieben werden zur Verkehrsanbindung: Connessione in corso interrotta forzatamente dall'host remoto..
Innere Ausnahme 2:

SocketException: Verbindung im Zusammenhang mit der Host-Remote.

Wo ist mein Fehler?
Danke!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post