Frage

ich zur Zeit einen WCF-Dienst mit webHttp Bindungen haben, im Versuch, die maximale Größe zu erhöhen, die durch Überschreiben der Standardeinstellungen in Config in den Dienst eingegeben werden kann, habe ich versucht haben, etwas zu tun wie

  <system.serviceModel>
<bindings>
<webHttpBinding>
  <binding name="webHttp" >
  <security mode="Transport">
      <transport clientCredentialType = 
             "None"
            proxyCredentialType="None"
            realm="string" />
  </security>
  </binding>

</webHttpBinding>
</bindings>
<services>

  <service name="PrimeStreamInfoServices.Service1" behaviorConfiguration="PrimeStreamInfoServices.Service1Behavior">
    <!-- Service Endpoints -->
    <endpoint address="" binding="webHttpBinding"  contract="PrimeStreamInfoServices.IService1">
      <!-- 
          Upon deployment, the following identity element should be removed or replaced to reflect the 
          identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
          automatically.
      -->
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="PrimeStreamInfoServices.Service1Behavior">
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<diagnostics>

und die Einstellung verschiedene andere Eigenschaften in Bezug auf der Nachrichtengröße, aber keiner scheint zu funktionieren, kann man sogar die Bindung die m Nachricht Größe eines webHttp ändern? Irgendwelche Vorschläge? Dank!

War es hilfreich?

Lösung

Es gibt eine Vielzahl von Einstellungen, die einen Einfluss abhängig von Ihren Einstellungen haben könnten - versuchen, diese:

<bindings>
  <webHttpBinding>
    <binding name="LargeWeb"
             maxBufferPoolSize="1500000"
             maxReceivedMessageSize="1500000"
             maxBufferSize="1500000">
      <readerQuotas 
            maxArrayLength="656000"
            maxBytesPerRead="656000"
            maxDepth="32"
            maxNameTableCharCount="656000"
            maxStringContentLength="656000"
            />
    </binding>
  </webHttpBinding>
</bindings>

Durch Ihre „Version“ des webHttpBinding definieren, und all diese Parameter auf höhere Werte einstellen, sollten Sie in der Lage sein, durch jede Nachrichtengröße zu erhalten (fast).

Wohlgemerkt: dies tut öffnen Ihr System auf das Potential mit großen Nachrichten überflutet und somit nach unten in die Knie gezwungen werden (klassische Denial-of-Service-Attacken) - das ist der Grund, diese Grenzen gesetzt sind ziemlich niedrig - von Design und absichtlich.

Sie können sie auf höhere Werte ändern - nur bewusst sein, was Sie tun und was die Sicherheitsrisiken sind, wenn Sie das tun

Marc

PS: Um die Verwendung dieser Einstellungen vornehmen, können Sie natürlich Bezug zu haben, dass Bindungskonfiguration in Ihrem Server und Client-Seite configs:

<client>
  <endpoint address="http://localhost"
            binding="webHttpBinding" bindingConfiguration="LargeWeb"
            contract="IMyService" />
</client>
<services>
  <service>
    <endpoint address="http://localhost"
              binding="webHttpBinding" bindingConfiguration="LargeWeb"
              contract="IMyService" />
  </service>
</services>

Andere Tipps

Einstellung Max Nachricht und Puffergröße für WCF REST-Service WebHttpBinding

<bindings>
  <webHttpBinding>
    <binding maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="200" maxStringContentLength="83886089" maxArrayLength="163841" maxBytesPerRead="2147483647" maxNameTableCharCount="16384"/>
    </binding>
  </webHttpBinding>
</bindings>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top