Ich habe Web-API-Projekt.Maximale HTTP-Anfrage Größe für asp web.api mit JSON
Ich muss dort JSON-Daten mit der Datei als codierte Base64-String (bis zu 200 MB) posten.
Wenn ich Daten bis zu ca. 10 mb sende, dann wird die nächste Methode normalerweise korrekt gefüllt Modell ImportMultipleFileModel.
Wenn ich mehr sende, dann ist das Modell null.
Warum?
So ändern i Methode Signatur:
[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 codierte 30 mb Datei i normalerweise als request JSON-String bekommen. Für 60 mb bekomme ich einen leeren String. Warum?
Next i Methode ändern
[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 Deserialisierung scheiterten OutOfMemoryException.
Warum?
UPD: maxRequestLength, setzen maxAllowedContentLength zu 2147483647
Es wird versucht, 60mb String in ein Konstrukt zu serialisieren, das dies nicht erlaubt. Sie möchten nicht 60 MB Speicher pro Anfrage auf irgendeine Weise halten. Aus diesem Grund verwenden Sie entweder Streams oder Sie teilen die Anfragen auf. –