2014-11-03 20 views
5

Mam usług WCF i mam metodę, kiedy chcę przekazać parametr jak wielki łańcuch (ponad 1MB)(413) Zapytanie Entity Too Large

uruchomić ten WCF i klient WCF testu zmieniłem konfigurację jest pokazany poniżej:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.serviceModel> 
     <bindings> 
      <basicHttpBinding> 
       <binding name="BasicHttpBinding_IMyService" sendTimeout="00:05:00" 
        maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
       </binding> 
      </basicHttpBinding> 
     </bindings> 

Kiedy próbuję wywołać tę metodę, nadal mam 413 jednostki żądania zbyt dużej.

+3

Czy zmieniłeś go na * oba * końce? Serwer i klient? –

+1

dodałem do klienta: ale wciąż ten sam błąd – Robert

Odpowiedz

4

Zgodnie z sugestią Matta Burlanda, należy skonfigurować koniec usługi, a także klienta. Szczegóły: Configuring Services Using Configuration Files. Zadanie nie różni się zbytnio od tego, co zrobiłeś na końcu przewodu po stronie klienta. Oto fragment wyżej wymienionego artykułu.

WCF korzysta z systemu konfiguracji System.Configuration architektury .NET Framework. Podczas konfigurowania usługi w Visual Studio należy użyć pliku Web.config lub App.config, aby określić ustawienia. Wybór nazwy pliku konfiguracyjnego jest określony przez środowisko hostingu wybrane dla usługi. Jeśli używasz usług IIS do obsługi usługi , użyj pliku Web.config. Jeśli używasz innego hostującego środowiska , użyj pliku App.config.

Proponuję ustawienie nie wszystko do int.MaxValue jak mają MaxReceivedMessageSize zestaw do 2GB otwiera cię do DOS (Denial-of-service) ataki i tym podobne. Sekcja Uwagi nieruchomości MaxReceivedMessageSize nawet stwierdza:

Wielkość wiadomości, które mogą być odbierane na drucie przez służby wykorzystaniem WSHttpBindingBase jest ograniczona przez ilość pamięci przydzielonej dla każdej wiadomości. Ten limit wiadomości ma na celu ograniczenie narażenia na ataki DoS (Denial of Service).

Być może po prostu próbujesz uruchomić go w tym momencie, ale daleki od rekomendacji jest pozostawienie go w ten sposób.

4

Mam również do czynienia z tym samym problemem i rozwiązany problem. Kod roboczy -

(413) Request Entity Too Large in WCF Postępuj zgodnie z kodem app.config. To działa i przy użyciu tego mogę wysłać duży plik

<bindings> 
    <webHttpBinding> 
     <binding name="myBinding" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" transferMode="Streamed" > 
      <readerQuotas maxDepth="64" maxArrayLength="2147483647" maxStringContentLength="2147483647"/> 
     </binding> 
    </webHttpBinding> 
</bindings> 
<services> 
    <service behaviorConfiguration="ForecastREST_API.RESTServiceImplBehavior" name="ForecastREST_API.RestServiceImpl"> 
     <endpoint address="http://localhost:59624/RestServiceImpl.svc" binding="webHttpBinding" contract="ForecastREST_API.IRestServiceImpl" behaviorConfiguration="Web" bindingConfiguration="myBinding"> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="webHttpBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 
<behaviors> 
    <endpointBehaviors> 
     <behavior name="Web"> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
      <webHttp defaultOutgoingResponseFormat="Json" automaticFormatSelectionEnabled="true" /> 
      <dispatcherSynchronization asynchronousSendEnabled="true" /> 
     </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
     <behavior name="ForecastREST_API.RESTServiceImplBehavior"> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
    </serviceBehaviors> 
</behaviors> 
+0

link tylko odpowiedzi są zniechęceni – Eldho

+0

@Eldho dodałem kod pracy również. –

+0

Niestety, niektórzy jeszcze nie głosowali w dół – Eldho