我是WCF和Silverlight的新手,有一个使用Silverlight客户端和WCF服务器的应用程序,它一直工作正常,直到我添加了一个以大对象作为参数的方法。该对象包含93个int,bool,string,enum类型的属性。当它阻塞时,WCF会给出如下错误消息:
The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error.
没有其他消息有意义。配置文件中的所有超时和 Buffersize 已设置为最大值。
我尝试过另一个包含较少属性的对象......我逐个添加它并且它有效。
我发现当有72个属性(包含enum,bool,string,int)时它可以工作,但是当我再添加一个属性时,它就不再起作用了。
我一直在努力,直到现在,非常感谢帮助我......
答案 0 :(得分:0)
尝试将所有服务器端配额设置为最大值,例如像这样的东西:
<bindings>
<basicHttpBinding>
<binding name="MyBasicHttpBinding"
maxReceivedMessageSize="2147483647"
>
<readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="MyWcfService">
<endpoint address="http://myservice..."
binding="basicHttpBinding" bindingConfiguration="MyBasicHttpBinding"
name="MyBasicHttpBinding" contract="IMyContract" />
</service>
</services>
答案 1 :(得分:0)
最后,我们找到了解决方案,对于那些有同样问题的人: 这是因为ny defaut,MaxSessionSize(在BinaryMessageEncodingBindingElement中) NetTcpBinding是最大的2048,我们不能再添加了,所以我们必须改成使用更大的MaxSessionSize进行定制......