[英]Remove size limit of WCF-Service answers
我创建了一个WCF服务,该服务在W2008服务器上运行操作,并作为结果返回数据结构。 问题是,此结果可能比标准服务配置似乎接受的结果更大。 因此,我尝试增加(或删除)此最大大小,但似乎找不到正确的属性。
在WCF的App.config中,我更改了basicHttpBinding的以下值:
读者配额:
然后,我启动WCF-Testclient调用该服务。 我确保basicHttpBinding属性的值等于配置中的值。 当我以某种方式调用服务时,结果集很小,一切正常。 但是,当这个大小增加时,我最终会得到错误(从德语翻译):
收到http :// localhost:8731 / Design_Time_Addresses / DiscoDataSource / Service1 /的 http回答时出错。 可能的原因:端点绑定不使用HTTP协议,或者服务器取消了HTTP-requestcontext。
服务器堆栈跟踪:
在System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException,HttpWebRequest请求,HttpAbortReason abortReason)
在System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan超时)
在System.ServiceModel.Channels.RequestChannel.Request(消息,TimeSpan超时)
在System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息,TimeSpan超时)
在System.ServiceModel.Channels.ServiceChannel.Call处(字符串操作,布尔单向,ProxyOperationRuntime操作,Object [] ins,Object [] outs,TimeSpan超时)
在System.ServiceModel.Channels.ServiceChannel.Call处(字符串操作,布尔型单向,ProxyOperationRuntime操作,Object [] ins,Object [] outs)
在System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作)
在System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage消息)
我想配置服务以返回结果,而不管大小如何。 有人知道,我需要在哪里更改配置?
预先感谢,弗兰克
如果要序列化的对象很多,则WCF将达到配置的限制和限制。 您已经尝试了所有标准项,但是其中一个项被遗漏了: maxItemsInObjectGraph
。 就像其他配置值一样,您需要同时在服务器端和客户端进行设置。 这是一个示例配置代码段,其值不必要地大:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="ClientBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
我显然省略了很多标签,而是倾向于说明maxItemsInObjectGraph
在.config文件中的位置。
您是否也在客户端和服务器端都更改了这些值? 您需要在通信的两端都进行更改-只有这样,它才能起作用。
如果您尚未在服务器端更改它们,则两者中的较小值(客户端和服务器值)将“获胜”。
但是,也许实际上是导致服务器中止的超时设置 。 在绑定上,您可以调整超时-默认情况下为60秒-因此,如果获取数据并根据需要进行组装需要更多时间,则需要调整绑定上的SendTimeout
,而不是大小设置。 ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.