2016-04-14 4 views
0

Ich lade einen anständig großen JSON-Teil in eine OData v4-Aktion hoch, die von C# ASP.NET bearbeitet wird. An einem bestimmten Punkt sehe ich, dass der Parameter ODataActionParameters einfach null ist, statt die Eingabe richtig zu analysieren, und der Server eine Nullzeigerausnahme auslöst.Wie groß ist die Größe von ODataActionParameters?

Die Daten, die ich hochladen kann in Stücke aufgeteilt werden, aber es ist a) unhandlich zu tun, und b) kann ein wenig Datenverlust verursachen, wenn ich das tue. (Ich lade Ereignisse in einen Simulator hoch; die Eingabe ist oft segmentierbar, da Gruppierungen darin enthalten sind, aber nicht segmentierbar ist - es könnte nur eine Gruppierung geben.)

Also an welchem ​​Punkt tut ODataActionParameters zerknittern unter der Last von Bytes? Ich mache im Moment einige furchtbar unwissenschaftliche "Wirf es an die Wand und schau, was klebt", aber wenn mir jemand sagen kann, was die Grenze ist, würde das mein Leben viel einfacher machen. (Gibt es auch eine Möglichkeit, dieses Limit für nur ein paar Endpunkte zu erweitern? Ist es konfigurierbar?)

+0

'ODataActionParameters' ist nur ein Alias ​​für' Dictionary ', und es ist nicht abstimmbar. Können Sie einen Stack-Trace bereitstellen, um anzuzeigen, wo die Ausnahme auftritt? – lencharest

Antwort

0

Es stellt sich heraus, dass die Beschränkung in der system.web httpRuntime-Konfiguration, nicht in den ODataActionParameters selbst war. Die Lösung war web.config zu ändern, um eine größere maxRequestLength zu ermöglichen:

<configuration> 
    <system.web> 
    <httpRuntime targetFramework="4.6" maxRequestLength="204800" /> 
    ....and other settings... 
    </system.web> 
</configuration> 

Der Standard maxRequestLength 4MB ist. Ich habe es hier auf 200MB eingestellt, weil verschiedene OData-Bits um meine App eine maxReceivedMessageSize von 200MB eingerichtet haben. (Das wahre Limit für eine bestimmte Anfrage ist die unteren Ihrer OData Config für diese Anfrage und die httpRuntime Konfig.)