Maximale http-request Größe für asp-web.api mit json
Habe ich den web-api-Projekt.
Muss ich posten, da json-Daten mit file-codiert base64-Zeichenfolge (bis zu 200 mb).
Wenn ich Daten senden, bis zu etwa 10 mb, dann die nächste Methode in der Regel erhalten Sie ordnungsgemäß ausgefüllt Modell ImportMultipleFileModel.
[HttpPost]
public async Task<HttpResponseMessage> ImportMultipleFiles(ImportMultipleFileModel importMultipleFileModel)
{
var response = ImportFiles(importFileModel);
return response;
}
Wenn ich mehr senden, dann Modell null ist.
Warum?
So wechsele ich die 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)
{ }
}
Sowie für verschlüsselte 30 mb-Datei, die ich normalerweise nicht bekommen requestData als json-string. Für 60 mb bekomme ich leere Zeichenfolge.
Warum?
Nächsten i-change-Methode zu
[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 fehlgeschlagen, da der OutOfMemoryException.
Warum?
UPD:
maxRequestLength, maxAllowedContentLength gesetzt, um 2147483647
InformationsquelleAutor vitm | 2016-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, die
maxRequestLength
.Oder
maxAllowedContentLength
(ich bekomme immer verwirrt, welches was ist).Außerdem würde ich überdenken, Veröffentlichung von Daten auf diese Weise. Lesen dieser Artikel form MSDN, es ist vor allem für das WCF, aber ich glaube, der Inhalt ist meistens gültig.
Seite Hinweis für Ihre Letzte Beispiel; Sie sollten nicht (oder vielleicht nur selten) verwenden
.Result
wenn Sie verwenden könnenawait
. Stephen Cleary schrieb eine gute Antwort auf das hier.Die Einstellung maxRequestLength behoben das Problem für mich
Ich habe eine ASP.Net WebForm project bietet Web-API als auch. Ich verwendet
maxAlloweContentLength="20971520"
20 MB und es funktioniert gut für web-Seiten, während der API-Anfrage unterstützt nur kleinere Dateien (bis zu 13MB).InformationsquelleAutor smoksnes