Web 服务 - 动态代理工厂错误,接收的数据大小



我使用动态代理工厂来通过 wsdl 字符串路径调用任何 Web 服务。不幸的是,当 Web 服务应答大量数据时,会引发异常:

System.ServiceModel.CommunicationException: Le quota de taille maximale autorisée 倒消息 参赛者 (65536( A été dépassé.Pour augmenter le quota, utilisez la propriété MaxReceivedMessageSize sur l'élément de la liaison appropriée.---> System.ServiceModel.QuotaExceededException: Le quota de taille maximale autorisée 倒消息 参赛者 (65536( A été dépassé.Pour augmenter le quota, utilisez la propriété MaxReceivedMessageSize sur l'élément de la liaison appropriée. ---鳍 De la trace de la pile d'exception 实习医师---

服务器堆栈跟踪:à System.ServiceModel.Channels.HttpInput.ThrowMaxReceivedMessageSizeExceeded(( à System.ServiceModel.Channels.HttpInput.GetMessageBuffer(( à System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(Stream inputStream( à System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(Exception& requestException( à System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan 超时( à System.ServiceModel.Channels.RequestChannel.Request(Message 消息, 时间跨度超时( à System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message 消息, 时间跨度超时( à System.ServiceModel.Channels.ServiceChannel.Call(String 动作, 布尔单向, 代理操作运行时操作, Object[] ins, Object[] outs, TimeSpan 超时( à System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime 操作( à System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage 消息(

在 [0] 处重新引发异常:à System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg( à System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type( à IWS_MG。继续操作(字符串 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);
                    }
我不

熟悉DynamicProxy库,但绑定对象应该有一个MaxReceivedMessageSize属性,就像basicHttpBinding一样。您需要将其设置为适合您的应用程序的大于 64K 的值。此外,请确保客户端调用的绑定配置了相同的服务值。

相关内容

  • 没有找到相关文章