2009-07-27 13 views
5

Mam obecnie usługę WCF z powiązaniami webHttp, próbując zwiększyć maksymalny rozmiar, który może zostać wprowadzony do usługi przez przesłonięcie domyślnych ustawień w config, próbowałem zrobić coś takiegoUstawianie maksymalnej wiadomości i rozmiaru bufora dla WCF webhttp

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

i ustawiania różnych innych właściwości dotyczących rozmiaru wiadomości, ale nikt zdaje się działać, można nawet zmienić rozmiar m essage o webHttp wiążąca? Jakieś sugestie? Dzięki!

+0

Czy mógłbyś opublikować odpowiednią część swojego pliku konfiguracyjnego? –

+0

właśnie edytowane, sprawdź to – Daniel

Odpowiedz

12

Istnieje mnogość ustawień, które mogą mieć wpływ w zależności od ustawień - spróbuj tego:

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

Definiując swoją „wersję” z webHttpBinding i ustawienie wszystkich tych parametrów do wyższych wartości, powinno być w stanie przejść przez dowolny rozmiar wiadomości (prawie).

Pamiętaj: dzięki temu twój system może zostać zalany ogromnymi wiadomościami i tym samym sprowadzony na kolana (klasyczne ataki typu "odmowa usługi") - dlatego te limity są ustawione dość nisko - zgodnie z projektem i celowo.

Możesz zmienić je na wyższe wartości - po prostu bądź świadomy, co robisz i jakie są zagrożenia bezpieczeństwa, jeśli to zrobisz!

Marc

PS: W celu skorzystania z tych ustawień, to oczywiście trzeba odwoływać się, że wiązanie konfigurację serwera i po stronie klienta 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> 
+0

To nie działa, to nie pozwól mi wysłać coś większego niż 64k nadal – Daniel

+0

Czy możesz pokazać swoją konfigurację? Czy odwołałeś się do tej wiążącej konfiguracji? –

+0

Tak, zdałem sobie sprawę, że to był mój problem, właśnie dodałem całą konfigurację do, chociaż kiedy wstawiam atrybut bindCOnfiguration otrzymuję wyjątek, z jakiegoś powodu – Daniel

0

Ustawienie Max wiadomość i rozmiar bufora dla usług WCF Rest webhttpbinding

<bindings> 
    <webHttpBinding> 
    <binding maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"> 
     <readerQuotas maxDepth="200" maxStringContentLength="83886089" maxArrayLength="163841" maxBytesPerRead="2147483647" maxNameTableCharCount="16384"/> 
    </binding> 
    </webHttpBinding> 
</bindings> 
Powiązane problemy