0

我是 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.

没有其他有意义的消息。配置文件中的所有TimeoutBuffersize都已设置为最大值。

我尝试过使用另一个包含较少属性的对象......我一个一个添加并且它起作用了。

我发现当有 72 个属性(使用 enum、bool、string、int)时它可以工作,但是当我再添加一个时,它就不再工作了。

直到现在我一直在挣扎一周,非常感谢您帮助我...

4

2 回答 2

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> 
于 2012-12-20T16:57:15.157 回答
0

最后我们找到了解决方法,对于遇到同样问题的人来说:因为那个默认,NetTcpBinding的MaxSessionSize(int the BinaryMessageEncodingBindingElement)最大为2048,不能再添加了,只好改成使用更大的 MaxSessionSize 进行自定义.....

于 2012-12-27T14:34:49.513 回答