2017-05-29 1 views
0

Ich versuche eine Antwort von einem Remote-Dienst zu erstellen. Mit dem folgenden Abschnitt in meiner web.config erhalte ich eine unerwünschte Antwort vom Webservice.C#/ASP.NET - Der Remote-Server hat eine unerwartete Antwort zurückgegeben: (413) Request Entity Too Large

Der Remote-Server hat eine unerwartete Antwort zurückgegeben: (413) Anforderungselement zu groß. Ich habe versucht, die Puffergröße zu erhöhen, bin aber nicht in der Lage, diesen Fehler zu umgehen.

Wie kann ich dieses Problem beheben?

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="CustomBinding_ISalesOrderService" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"> 
      <security mode="Transport"/> 
      <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="https://app.vendsys2.com/VendSysAPI/v1.2/SalesOrderService.svc/VendSysAPI/v1.2/SalesReportService.svc" 
     binding="basicHttpBinding" bindingConfiguration="CustomBinding_ISalesOrderService" 
     contract="SalesOrderService.ISalesOrderService" name="CustomBinding_ISalesOrderService" /> 
    </client> 
    </system.serviceModel> 
+0

Können Sie dies lesen https://stackoverflow.com/questions/10122957/iis7-413-request-entity-tool-large-upload_readheadsize Ändern von BasicHttpBinding zu WebHttpBinding könnte helfen. – Miguel

Antwort

0

Wenn ein Client-Anforderung eine lange HTTP sendet der IIS-Arbeitsprozess genügend Daten empfangen kann Request-Header, aber nicht empfängt den gesamten Anforderungsentität Körper zu analysieren. Wenn der IIS-Arbeitsprozess erkennt, dass Clientzertifikate Daten an den Client zurückgeben müssen, versucht IIS, die Clientverbindung neu zu verhandeln. Der Client kann die Verbindung jedoch nicht neu verhandeln, da er darauf wartet, die verbleibenden Anforderungsdaten an IIS [1] zu senden. Dein Problem könnte genau das sein.

Genommen von Microsoft TechNet

Wenn Client Neuverhandlung angefordert wird, muss der Antrag Entitätskörpers vorbelastet werden SSL-Vorspannung verwendet wird. SSL-Preload verwendet den Wert der Metabase-Eigenschaft UploadReadAheadSize, die für ISAPI-Erweiterungen verwendet wird. Wenn UploadReadAheadSize jedoch kleiner als die Inhaltslänge ist, wird ein HTTP 413-Fehler zurückgegeben und die Verbindung wird geschlossen, um Deadlock zu verhindern. (Deadlock tritt auf, weil ein Client darauf wartet, das Senden einer Anforderungseinheit abzuschließen, während der Server darauf wartet, dass die Neuverhandlung abgeschlossen wird, aber Neuverhandlung erfordert, dass der Client Daten senden kann, was nicht möglich ist).


Die Lösung besteht darin, dass Client sendet die gesamten Entitätskörpers nicht blockiert zu gewährleisten. Ändern Sie dazu den Wert von UploadReadAheadSize auf einen Wert größer als die Inhaltslänge.

Das folgende Beispiel zeigt, wie der Wert für UploadReadAheadSize auf dem Webserver auf 200 KB festgelegt wird.

cscript adsutil.vbs set w3svc/1/uploadreadaheadsize 200 

Seien Sie sich bewusst, dass das UploadReadAheadSize Element in IIS entfernt wurde 7 und wurde als Attribut zu serverRuntime Element hinzugefügt.

Verwandte Themen