通信WCF和silverlight5与大对象

时间:2012-12-20 16:51:23

标签: wcf silverlight

我是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)时它可以工作,但是当我再添加一个属性时,它就不再起作用了。

我一直在努力,直到现在,非常感谢帮助我......

2 个答案:

答案 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进行定制......