2017-02-15 2 views
0

Ich versuche, meine Web-API lange Request-Strings akzeptieren, aber egal, was ich versuche, bekomme ich eine 400 Bad Request. Meine Methode wird über zugegriffen:Wie Parameterlänge in WEB-API zu erhöhen

http://server/api/controller/method/ {input}

Der Code ist

[HttpGet] 
public IHttpActionResult method(string input) { 
    //Do Stuff 
    return Ok(); 
} 

Die folgende Art von Anruf wird gut funktionieren.

http://server/api/controller/ShortInputString

jedoch so etwas wie:

http://server/api/controller/SuperHugeReallyReallyLongInputString

Ergebnisse in einem 400 Bad Request.

Aus meiner Sicht ist dies, weil die maximale Länge, die meine Eingabe-Argument haben kann. Ich habe versucht, dies auf die folgenden Arten zu erhöhen, die in anderen Stack-Überlauf-Posts gefunden werden, aber keiner von ihnen funktioniert.

<httpRuntime targetFramework="4.5.2" maxRequestLength="4096"/> //in web.config 

    <security> 
    <requestFiltering> 
    <requestLimits maxAllowedContentLength="52428800" /> 
    <!--50MB--> 
    </requestFiltering> 
</security> //also in web.config 


config.Formatters.FormUrlEncodedFormatter.ReadBufferSize = int.MaxValue/10; //in WebApiConfig.cs 

Keine der oben genannten scheinen keine Auswirkungen auf die maximale Länge zu haben, die eingegeben werden können. Was vermisse ich?

Dank

+0

Das Problem ist nicht maximal zulässigen Inhaltslänge. Es ist die URL-Länge. Was bei etwa 2.000 Zeichen ausmacht. Möglicherweise müssen Sie Ihre Eingabe im Hauptteil der Anfrage POST. – Nkosi

+0

Danke. Ich habe versucht, einen schnellen Proof of Concept für etwas zu bauen und habe gehofft, dass ich das schaffen könnte, anstatt mit CORS zu kämpfen. – Dave

Antwort

0

Ended stolperte über etwas, das funktionierte.

https://blogs.msdn.microsoft.com/amyd/2014/02/06/response-400-bad-request-on-long-url/

Benötigen Sie den folgenden Registrierungsschlüssel hinzufügen oder aktualisieren:

HKLM \ System \ CurrentControlSet \ Services \ HTTP \ Parameters \ UrlSegmentMaxLength

auch noch tun müssen, :

<httpRuntimetargetFramework="4.5" maxUrlLength="2083" maxQueryStringLength="2048" /> 

Starten Sie den HTTP-Dienst neu. Genau wie der Autor konnte ich das nicht zum Laufen bringen, also habe ich einfach neu gestartet.