wake-up-neo.com

WCF-Dienst maxReceivedMessageSize basicHttpBinding-Problem

Ich kann meinen WCF-Dienst nicht dazu bringen, große Datenmengen zu akzeptieren, die an ihn gesendet werden. 

Ich habe den maxReceivedMessageSize für den Client konfiguriert und könnte große Datenmengen problemlos empfangen. Es werden Daten an den Dienst gesendet. 

Ich habe versucht, den Dienst zu konfigurieren, hatte aber kein Glück. Hier ist meine web.config:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true"/>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false" />
          <serviceDiscovery />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service name="Service.IService">
        <clear />
        <endpoint binding="basicHttpBinding" bindingConfiguration="MessageSizeBasic" contract="Service.IService" />
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="MessageSizeBasic" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
            maxArrayLength="16348" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        </binding>
      </basicHttpBinding>
      <webHttpBinding>
        <binding name="MessageSizeWeb" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
      </webHttpBinding>
    </bindings>
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>
35
BlargleMonster

Wenn Sie den Namen aus Ihrer Bindung entfernen, wird er auf alle Endpunkte angewendet und sollte die gewünschten Ergebnisse erzielen. Als so:

<services>
  <service name="Service.IService">
    <clear />
    <endpoint binding="basicHttpBinding" contract="Service.IService" />
  </service>
</services>
<bindings>
  <basicHttpBinding>
    <binding maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
        maxArrayLength="16348" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
    </binding>
  </basicHttpBinding>
  <webHttpBinding>
    <binding maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
  </webHttpBinding>
</bindings>

Beachten Sie auch, dass ich das bindingConfiguration-Attribut vom Endpunktknoten entfernt habe. Ansonsten würden Sie eine Ausnahme erhalten.

Die gleiche Lösung wurde hier gefunden: Problem mit großen Anfragen in WCF

63
TRayburn

Ist der Name Ihrer Serviceklasse wirklich IService (im Namespace Service)? Ursprünglich hatten Sie wahrscheinlich keine Übereinstimmung im Namen der Serviceklasse im Attribut name des Elements <service>.

0
carlosfigueira

Wenn Sie HTTPS anstelle von ON der Bindung verwenden, setzen Sie es mit dem Tag httpsTransport in die Bindung:

    <binding name="MyServiceBinding">
      <security defaultAlgorithmSuite="Basic256Rsa15" 
                authenticationMode="MutualCertificate" requireDerivedKeys="true" 
                securityHeaderLayout="Lax" includeTimestamp="true" 
                messageProtectionOrder="SignBeforeEncrypt" 
                messageSecurityVersion="WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10"
                requireSignatureConfirmation="false">
        <localClientSettings detectReplays="true" />
        <localServiceSettings detectReplays="true" />
        <secureConversationBootstrap keyEntropyMode="CombinedEntropy" />
      </security>
      <textMessageEncoding messageVersion="Soap11WSAddressing10">
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
                      maxArrayLength="2147483647" maxBytesPerRead="4096" 
                      maxNameTableCharCount="16384"/>
      </textMessageEncoding>
      <httpsTransport maxReceivedMessageSize="2147483647" 
                      maxBufferSize="2147483647" maxBufferPoolSize="2147483647" 
                      requireClientCertificate="false" />
    </binding>
0
Serj Sagan