Ошибка DynamicProxyFactory с размером полученных данных

Я использую dynamicproxyfactory для вызова любого веб-сервиса по пути строки wsdl. К сожалению, когда веб-сервис отвечает на большое количество данных, возникает исключение:

System.ServiceModel.CommunicationException: Le quota de taille maximale autorisée для файлов сообщений (65536) и e-dépassé. Вы можете увеличить свою квоту, используя максимум MaxReceivedMessageSize sur l'élément de la lisonison подходящего. ---> System.ServiceModel.QuotaExceededException: указание максимальной максимальной авторизации для сообщений (65536) и повторного запроса. Вы можете увеличить свою квоту, используя максимум MaxReceivedMessageSize sur l'élément de la lisonison подходящего. --- Фин де ла след де ла интернета ---

Трассировка стека сервера..ParseIncomingMessage(Exception& requestException) à System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(время ожидания TimeSpan) Запрос (сообщение-сообщение, время ожидания TimeSpan) à System.ServiceModel.Channels.ServiceChannel.Call (действие String, логический односторонний метод, операция ProxyOperationRuntime, Object[] ins, Object[] outs, TimeSpan timeout) à System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(метод IMethodCallMessageCall, операция ProxyOperationRuntime) à System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMess возраст сообщение)

Исключение, переброшенное в [0]: à System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) String xmlIn) à WS_MGClient.ProceedOperation(String xmlIn)}

Это исключение означает, что максимальный размер равен 65536, а полученный размер данных больше.

Кто-нибудь знает, как изменить максимальный размер?

Для информации, это мой код:

try
                    {
                        // Factory Creation with WCF WSDL address
                        DynamicProxyFactory factory = new DynamicProxyFactory(sServiceWsdl);

                        // Solution test which doesn't work    
                        foreach (ServiceEndpoint endpoint in factory.Endpoints)
                        {

                            Binding binding = endpoint.Binding;

                            XmlDictionaryReaderQuotas myReaderQuotas = new XmlDictionaryReaderQuotas();
                            myReaderQuotas.MaxStringContentLength = int.MaxValue;
                            myReaderQuotas.MaxArrayLength = int.MaxValue;
                            myReaderQuotas.MaxBytesPerRead = int.MaxValue;
                            myReaderQuotas.MaxDepth = int.MaxValue;
                            myReaderQuotas.MaxNameTableCharCount = int.MaxValue;

                            binding.GetType().GetProperty("ReaderQuotas").SetValue(binding, myReaderQuotas, null);
                        }

                        // Proxy Creation with Contract's name
                        DynamicProxy proxy = factory.CreateProxy(sContract);

                        XElement XmlIN = XElement.Parse(sXmlIN);

                        // Method call with parameters
                        XElement XmlOUT = XElement.Parse((string)proxy.CallMethod(sMethod, XmlIN.ToString()));

                        sXmlOUT = XmlOUT.ToString(SaveOptions.None);

                        proxy.Close();
                    }
                    catch (Exception e)
                    {
                        sXmlOUT = new XElement("ALL_XML_OUT", new XElement("APP_TRX", sAppTrx), new XElement("WS_RC", 1), new XElement("ERROR_MESS", e.Message)).ToString(SaveOptions.None);
                    }

1 ответ

Я не знаком с библиотекой DynamicProxy, но объект привязки должен иметь свойство MaxReceivedMessageSize, как в basicHttpBinding. Вам нужно установить для него значение больше 64 КБ, которое подходит для вашего приложения. Также убедитесь, что служба настроена с тем же значением для привязки, которую вызывает клиент.

Другие вопросы по тегам