2016-03-30 6 views
0

Ich habe die meisten Fragen, die sich auf dieses Problem beziehen, angeschaut und keine der Lösungen funktioniert. Die Bindungen, die ich unten aufgeführt ...Immer noch (413) Request Entity zu groß von WCF empfangen

Server

<basicHttpBinding> 
    <binding name="UploadSoap" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="Transport"></security> 
    </binding> 
</basicHttpBinding> 
<webHttpBinding> 
    <binding name="UploadSoapWeb" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" /> 
</webHttpBinding> 
<client> 
    <endpoint address="https:.../upload.asmx" binding="webHttpBinding" bindingConfiguration="UploadSoapWeb" contract="Upload.UploadSoap" name="UploadSoap" /> 
</client> 

Kunde

<bindings> 
     <basicHttpBinding> 
      <binding name="BasicHttpBinding_service" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"> 
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://.../service.svc" 
      binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_service" 
      contract="HH.service" name="BasicHttpBinding_service" /> 
    </client> 

Ich habe versucht, sowohl die Grund Bindung und die Web-Bindung, aber ich bin immer noch die Fehlermeldung erhalten.

Dank

+0

Hosten Sie Ihren Dienst in IIS oder ist er selbst gehostet? Wenn IIS welche Version von IIS? –

+0

Ich benutze IIS 8.5 – Gary

+0

Könnten Sie Serverbindungen in der Frage aktualisieren, um auch die Konfiguration für den Dienstendpunkt anzuzeigen. –

Antwort

1

Sie haben keine explizite Bindung für Ihren Dienst festgelegt, daher wird standardmäßig basicHttpBinding mit den Standardkonfigurationswerten verwendet. Der Standardwert für maxReceivedMessageSize ist 64 KB.

Beachten Sie, dass maxReceivedMessageSize nur für den Nachrichtenempfänger und nicht für den Absender der Nachricht gilt. Der Client muss diese Werte nicht festlegen, wenn er eine große Nachricht sendet.

Aktualisieren Sie Ihre Server-Seite auf die folgende Bindung:

<basicHttpBinding> 
    <!-- Unnamed (default) binding--> 
    <binding maxBufferPoolSize="2147483647" 
      maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647" 
      messageEncoding="Text" /> <!-- Consider using Mtom if you're transfering binary data--> 
    <binding name="UploadSoap"> 
     <security mode="Transport"></security> 
    </binding> 
</basicHttpBinding> 
<client> 
    <endpoint address="https:.../upload.asmx" 
       binding="basicHttpBinding" 
       bindingConfiguration="UploadSoap" 
       contract="Upload.UploadSoap" name="UploadSoap" /> 
</client> 

Die unbenannte Bindung wird die Standardwerte für jeden Endpunkt, Server oder Client zur Verfügung stellen, mit dem basicHttpBinding ohne bindingConfiguration.

Ich habe angenommen, dass Ihre Clients keine große Nachricht als Antwort erhalten.

+0

Das hat funktioniert, danke. Ich bin mir nicht sicher warum. Die ursprüngliche Anweisung hatte bindingConfiguration = "UploadSoap" und es gab eine Bindung, die darüber aufgerufen wurde, aber die Sicherheitsaussage enthielt. – Gary

0

Wenn Sie den Fehler 413 aus dem Dienst sind empfangen, dann wird das Problem, dass Ihre Dienstkonfiguration alle explizit definiert Service Endpunkte muss nicht sein, so dass die Bindungskonfiguration, die Sie haben created wird nicht verwendet.

Sie benötigen einen <services> Abschnitt zu Ihrem Service Config hinzuzufügen, wie folgt aus:

<services> 
    <service name="YourServiceName"> 
    <endpoint address="" binding="basicHttpBinding" 
       bindingConfiguration="UploadSoap" 
       contract="YourContractName" /> 
    </service> 
</services> 

Wie zur Zeit geschrieben, es gibt nichts, die WCF Ihre definierten Bindungskonfiguration für den Service zu nutzen erzählt, so durch default out of the box WCF verwendet basicHttpBinding mit den Standardwerten (niedriger).

Ein zweiter Weg, um dieses Problem zu lösen, ist eine Bindungskonfiguration zu definieren, und es als Standard für diese Art von Bindung festgelegt durch Weglassen des name Attribut, wie folgt aus:

<binding maxBufferPoolSize="2147483647" 
     maxBufferSize="2147483647" 
     maxReceivedMessageSize="2147483647" 
     messageEncoding="Text"> 
    <readerQuotas maxDepth="2147483647" 
       maxStringContentLength="2147483647" 
       maxArrayLength="2147483647" 
       maxBytesPerRead="2147483647" 
       maxNameTableCharCount="2147483647" /> 
    <security mode="Transport"></security> 
</binding> 

I bevorzugen im Allgemeinen die erste Methode (Festlegen eines expliziten Dienstendpunkts), aber beide sollten funktionieren.

+0

Wenn ich den Namen von basicHttpBinding entferne und auch bindingConfiguration vom Endpunkt entferne, erhalte ich einen Fehler, der besagt, dass der Endpunkt nicht gefunden werden kann. – Gary

Verwandte Themen