DynamicProxyFactory錯誤我用了dynamicproxyfactory爲了通過WSDL的任意字符串路徑來調用Web服務。 Unfortunalty,當A web服務答案大量的數據,將引發一個例外:與接收到的數據大小
System.ServiceModel.CommunicationException: 最大尺寸允許 配額用於傳入消息(65536)已被超過 。爲了增加配額,使用 財產MaxReceivedMessageSize相應的鏈接的 元素。 ---> System.ServiceModel.QuotaExceededException: 最大尺寸允許 配額用於傳入消息(65536)已被超過 。爲了增加配額,使用 財產MaxReceivedMessageSize相應的鏈接的 元素。 ---結束 跟蹤內部異常堆棧 ---
服務器堆棧跟蹤:在 System.ServiceModel.Channels.HttpInput.ThrowMaxReceivedMessageSizeExceeded() 到 System.ServiceModel.Channels.HttpInput .GetMessageBuffer()來 System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(流 的inputStream)至 System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(例外& requestException)至 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel。 HttpChannelRequest.WaitForReply(T imeSpan 超時)到 System.ServiceModel.Channels.RequestChannel.Request(消息 消息時間跨度超時)到 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息 消息時間跨度超時)到 System.ServiceModel.Channels。 ServiceChannel.Call在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(字符串 操作,布爾單向, ProxyOperationRuntime操作, 對象[]項,對象[]奏, 時間跨度超時)(IMethodCallMessage 包括methodCall,ProxyOperationRuntime 操作)到 System.ServiceModel.Channels.ServiceChannelProxy.In voke(的iMessage 消息)在[0]〜 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(的iMessage reqMsg,的iMessage retMsg)
重新拋出異常給 System.Runtime.Remoting.Proxies.RealProxy。 PrivateInvoke(MessageData & MSGDATA,的Int32類型)在 IWS_MG.ProceedOperation(字符串XMLIN) 到WS_MGClient.ProceedOperation(字符串 XMLIN)}
此異常意味着聚類MAXSIZE是65536,並且在接收到的數據大小寬度ST。
任何人都知道如何交流MAXSIZE?
有關信息,這是我的代碼:
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);
}
也許解決方案是創建動態地Web引用,而不是服務引用,但我沒有在網上找到 – BaptX