Limit maksymalnego rozmiaru wiadomości dla wiadomości przychodzących (65536) został przekroczony. Aby zwiększyć kwotę, użyj właściwości MaxReceivedMessageSize na odpowiednim elemencie binding.
Korzystając z WCF, napotykam następujące problemy:
Limit maksymalnego rozmiaru wiadomości dla wiadomości przychodzących (65536) został przekroczony. Aby zwiększyć kwotę, użyj właściwości MaxReceivedMessageSize na odpowiednim elemencie binding.
Opis problemu:
Gdy klient dzwoni do WCF i zwraca dużą ilość danych, nie ma problemu z LAN (klient znalazł problem z maszyną na miejscu, dokładny powód jest nieznany). Jest problem z publikowaniem na extranecie.
Informacja o wyjątku, którą wykrywa debug VS2012, to: Podczas przesyłania danych przez kanał HTTP wystąpił błąd (dane nie mogły być odczytane z połączenia transportowego: połączenie zostało zamknięte. )。
Wyjątek zwracany przez narzędzie WCFStorm to: Maksymalny limit wielkości wiadomości dla wiadomości przychodzących (65536) został przekroczony. Aby zwiększyć kwotę, użyj właściwości MaxReceivedMessageSize na odpowiednim elemencie binding.
Przed pojawieniem się błędu zarówno serwer, jak i klient dodali następujące ustawienia:
Dodaj następujący kod po stronie serwera, aby rozwiązać problem:
Mam nadzieję, że rozwiąże to i Ciebie, którzy mają ten sam problem.
Inne rozwiązania:
Po przeczytaniu wpisu @sunny007sun http://bbs.csdn.net/topics/360255080, znaleziono rozwiązanie http://www.cnblogs.com/happyhippy/archive/2011/07/02/2096482.html jego dorobku (blog). Web.config automatycznie wygenerowany przez Silverlight nie zawiera informacji konfiguracyjnych dla usług i musi zostać tutaj dodany <services> <service behaviorConfiguration="MyBehavior" nazwa="WcfService1.Service1"> <adres końcowy="" binding="basicHttpBinding" bindingConfiguration="NewBinding0" contract="WcfService1.IService1" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> W rzeczywistości nadal istnieje różnica między service.name a endpoint.contract, kontrakt jest protokołem odpowiadającym ServiceContract w projekcie WCF, czyli interfejsowi IService1, a usługa odpowiada konkretnemu wywołaniu svc, czyli Usługi1.
Jak dotąd problem został rozwiązany, dziękuję @sunny007sun za 11 lat publikowania i blogowania.
|