Maximale http-Anforderungsgröße für asp web.api mit json
Ich habe Web-API-Projekt.
Ich muss dort JSON-Daten mit Datei als codierte Base64-Zeichenfolge (bis zu 200 MB) posten.
Wenn ich Daten bis zu ca. 10 MB sende, wird bei der nächsten Methode normalerweise das Modell ImportMultipleFileModel richtig ausgefüllt.
[HttpPost]
public async Task<HttpResponseMessage> ImportMultipleFiles(ImportMultipleFileModel importMultipleFileModel)
{
var response = ImportFiles(importFileModel);
return response;
}
Wenn ich mehr sende, ist das Modell null.
Warum
So ändere ich Methodensignatur auf:
[HttpPost]
public async Task<HttpResponseMessage> ImportMultipleFiles()
{
ImportMultipleFileModel importMultipleFileModel = null;
var requestData = await Request.Content.ReadAsStringAsync();
try
{
JsonConvert.
importMultipleFileModel = JsonConvert.DeserializeObject<ImportMultipleFileModel>(requestData);
}catch(Exception e)
{ }
}
Und für verschlüsselte 30 MB-Datei bekomme ich normalerweise requestData als JSON-Zeichenfolge. Für 60 MB bekomme ich leere Zeichenfolge. Warum
Nächste ändere ich die Methode auf
[HttpPost]
public async Task<HttpResponseMessage> ImportMultipleFiles()
{
ImportMultipleFileModel importMultipleFileModel = null;
var requestData = Request.Content.ReadAsStringAsync().Result;
try
{
importMultipleFileModel = JsonConvert.DeserializeObject<ImportMultipleFileModel>(requestData);
}catch(Exception e)
{ }
}
Und die Deserialisierung ist aufgrund einer OutOfMemoryException fehlgeschlagen.
Warum
UPD: maxRequestLength, maxAllowedContentLength auf 2147483647 gesetzt