Fehler 400 (ungültige Anforderung): maxReceivedMessageSize wurde für meinen WCF-Dienst nicht berücksichtigt

Es gibt mehrere verwandte Fragen zu SO (fast derselbe Titel), von denen keine mir geholfen hat, mein Problem zu beheben. Bitte schließen Sie meine Frage nicht als Duplikat, bevor Sie sie lesen. Vielen Dank.

Ich verwende derzeit WCF, um einen Webservice (SOAP, HTTP) verfügbar zu machen. Es wird vorerst in IIS Express bereitgestellt. Mein Problem ist, dass ich es nicht schaffen kann, meinen Service von meinem Kunden zu verbrauchen. Mein Kunde erhält eineHTTP Error 400 Bad request Ausnahme.

Ich habe dann die server-seitige Ablaufverfolgung aktiviert, um zu sehen, was tatsächlich passiert. Ich erhalte Folgendes:

Ich habe die Fehlermeldung ins Englische übersetzt:The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element..

Eigentlich ziemlich selbsterklärend. Da meine SOAP-Nachricht ziemlich umfangreich ist, überschreitet sie wahrscheinlich das Limit von 64 KB.

Ich habe beschlossen, dieses Limit in der Bindungskonfiguration zu erweitern. Also hier ist meine web.config (Serverseite):

<code><services>
  <service name="MyServiceName">
    <endpoint binding="basicHttpBinding"
              bindingConfiguration="MyBindingConfiguration"
              bindingNamespace="http://my_namespace"
              contract="XXX.IMyContract" />
  </service>
</services>

<bindings>
  <basicHttpBinding>
    <binding name="MyBindingConfiguration"
             allowCookies="true"
             maxReceivedMessageSize="2147483647"
             maxBufferSize="2147483647"
             maxBufferPoolSize="2147483647">
      <readerQuotas maxDepth="32" maxArrayLength="2147483647" maxStringContentLength="2147483647" />
    </binding>
  </basicHttpBinding>
</bindings>
</code>

Wie Sie sehen, sind alle Größen auf eingestelltint.MaxValue.

Ich habe auch meine client app.config geändert, hier ist es:

<code><bindings>
  <basicHttpBinding>
    <binding name="MyBindingName"
             allowCookies="false"
             bypassProxyOnLocal="false"
             hostNameComparisonMode="StrongWildcard"
             maxBufferSize="2147483647"
             maxBufferPoolSize="2147483647"
             maxReceivedMessageSize="2147483647"
             messageEncoding="Text"
             textEncoding="utf-8"
             transferMode="Buffered"
             useDefaultWebProxy="true">

      <readerQuotas maxDepth="32"
                    maxStringContentLength="2147483647"
                    maxArrayLength="16384"
                    maxBytesPerRead="4096"
                    maxNameTableCharCount="16384" />

      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>

    </binding>
  </basicHttpBinding>
</bindings>

<client>
  <endpoint address="http://localhost:8083/myAddress.svc"
            binding="basicHttpBinding"
            bindingConfiguration="MyBindingName"
            contract="IMyContract"
            name="MyBindingName" />
</client>
</code>

Ich habe dann meinen Dienst neu bereitgestellt, und das Problem war immer noch hier (HTTP 400, Bad request auf Client-Seite +MaxReceivedMessageSize limited to 65536 auf der Serverseite).

Ich habe dann meinen Dienst mit einer sehr kleinen SOAP-Nachricht getestet:alles ist vollkommen in ordnung. Das Problem ist also, dass meine Nachricht größer als 64 KB ist.

Ich habe gestern 2 Stunden damit verbracht herauszufinden, was das Problem mit meiner Konfiguration ist ... Wahrscheinlich etwas Offensichtliches, aber ich kann es nicht finden ...

Ich habe viel über dieses Problem gegoogelt, 95% der Zeit ist das Problem der Entwickler vergessen, die anzugebenbindingConfiguration Attribut im Service-Endpunkt. Wie Sie oben in meiner web.config sehen können, ist es für mich in Ordnung.

Dann habe ich gefundennoch eine frage zum stackoverflow zum (fast) gleichen thema.

Wie der Autor in seiner Frage sagte, setzen Sie den Namen der Bindungskonfiguration aufstring.Empty "behebt" das Problem:

<code><services>
  <service name="MyServiceName">
    <endpoint binding="basicHttpBinding"
              bindingConfiguration=""
...

<bindings>
  <basicHttpBinding>
    <binding name=""
...
</code>

Bei Verwendung der Standardbindung funktioniert alles einwandfrei. Ich kann mein Problem nicht einfach mithilfe dieser Problemumgehung beheben, da ich in derselben web.config mehrere verschiedene Bindungskonfigurationen angeben muss.

Ich erstelle hier eine Frage neu, weil es nicht dieselben Bedingungen gibt: Mein Dienst wird nicht selbst gehostet, sondern in IIS Express (oder IIS 7.5, getestet, dasselbe Problem).

Ich habe eine gefundenähnliches Problem hier mit einem selbst gehosteten Dienst, und das Problem war mit dieser Besonderheit verbunden. Ich denke also, dass es zwischen diesen 2 SO-Fragen etwas anderes gibt.

Ich vermute, dass an meiner Konfiguration offensichtlich etwas nicht stimmt, aber ich kann nicht finden, was. Jede Hilfe dankbar.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage