Question

J'ai actuellement un service WCF avec des liaisons de webHttp, im essayant d'augmenter la taille maximale qui peut être appliqué en entrée au service en remplaçant les paramètres par défaut dans config, j'ai essayé de faire quelque chose comme

  <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>

et la mise en diverses autres propriétés relatives à la taille des messages, mais aucun ne semble fonctionner, peut-on changer la taille même de essage m d'une fixation webHttp? Aucune suggestion? Merci!

Était-ce utile?

La solution

Il y a une multitude de paramètres qui pourraient avoir une influence en fonction de vos paramètres - essayez ceci:

<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>

En définissant votre « version » du webHttpBinding et le réglage de tous les paramètres à des valeurs plus élevées, vous devriez être en mesure d'obtenir par une taille de message (presque).

Rappelez-vous: cela ne s'ouvre votre système au potentiel d'être inondé d'énormes messages et donc être ramené à ses genoux (attaques par déni de service classique) - c'est la raison pour laquelle ces limites sont fixées assez faible - par conception et sur le but.

Vous pouvez les modifier à des valeurs plus élevées - juste être conscient de ce que vous faites et quels sont les risques de sécurité sont, si vous faites

Marc

PS: Pour utiliser ces paramètres, vous avez bien entendu faire référence à cette configuration de liaison dans vos configs côté serveur et client:

<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>

Autres conseils

Réglage Max messages et la taille de la mémoire tampon pour les services WCF Rest webHttpBinding

<bindings>
  <webHttpBinding>
    <binding maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="200" maxStringContentLength="83886089" maxArrayLength="163841" maxBytesPerRead="2147483647" maxNameTableCharCount="16384"/>
    </binding>
  </webHttpBinding>
</bindings>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top