2009-11-10 16 views
7

Próbuję zadzwonić usług WCF (obsługiwana usługa systemu Windows, nie IIS) i otrzymuję następujący błąd:WCF Maksymalny rozmiar wiadomości Kontyngent

The maximum message size quota for incoming messages has been exceeded for the remote channel. See the server logs for more details.

Próbowałem zwiększając MaxReceivedMessageSize i ReaderQuotas do ich maksymalnych wartości bez żadnego szczęścia.

Mam również włączone logowanie i sprawdziłem rozmiar wiadomości, która jest "wysyłana". Jest zdecydowanie nigdzie blisko maksimum. Mówimy o wysłaniu obiektu, który został zserializowany do formatu XML 372 KB.

dwa pytania:

  1. Czy ktoś wie co „logi serwera” komunikat odnosi się do? Sprawdziłem EventViewer, ale nic się tam nie wyświetla ...

  2. Czy ktoś wie, jakie inne ustawienia mogą tu mieć zastosowanie?

Odpowiedz

5

Twoje pytanie przypomniało mi wpis na blogu Shawna Wildermutha, w którym miał problemy z dużymi rozmiarami wiadomości w aplikacji Silverlight. Być może będzie to pomóc:

http://wildermuth.com/2009/09/10/Using_Large_Message_Requests_in_Silverlight_with_WCF

Shawn mówi:

The trick is to change the customBinding in the web.config to use larger defaults. I picked 2MB as it its a reasonable size. Of course setting them to 2GB like shown above will work but it does leave you more vulnerable to attacks. Pick a size that isn't larger than your largest request but isn't overly large. Its a guessing game. To set these, you need to add them to your web.config is to put them on the httpTransport node:

+0

Dzięki! Ten artykuł był bardzo pomocny. – manu08

1

Myślę, że logi serwera oznaczają pliki śledzenia i rejestrowania, które są tworzone po włączeniu. Oto MSDN link.

Właściwości, które mam do czynienia z WCF, które muszą mieć wyższą wartość w aplikacjach, które piszę, to maxReceivedMessageSize, maxStringContentLength, maxArrayLength i maxBufferSize. Spróbuj zwiększyć je i zobaczyć, co się stanie. WCF może być trudny do debugowania, ponieważ lubi przełknąć wyjątki.

1

Można określić logi serwera i ścieżkę w konfiguracji aplikacji w następujący sposób

<system.diagnostics> 
    <trace autoflush="true" /> 
    <sources> 
     <source name="System.ServiceModel" 

        switchValue="Critical, Error, Warning" 
       > 
     <listeners> 
      <add name="traceListener" 
         type="System.Diagnostics.XmlWriterTraceListener" 
         initializeData="F:\log-data\ServiceTrace.svclog" 
      /> 
     </listeners> 
     </source> 
    </sources> 

    </system.diagnostics> 
+1

Dodałem ten element konfiguracji do mojej aplikacji usługi i otrzymuję plik dziennika. Jednak pokazuje po prostu wysłanie wiadomości, która się pojawia. Nie pokazuje niczego na temat rzeczywistego błędu lub w ogóle nie działa. – manu08

0

dwie rzeczy:

  • możesz pokazać nam konfigurację serwera i klienta (tylko odpowiednie sekcje - punkty końcowe, konfiguracja powiązania)

  • czy zmieniłeś wartości po obu stronach (klienta i serwera)?

Jest cała mnogość ustawień rozmiaru można wpływać ....

Powiązane problemy