0

私は WCF と Silverlight を初めて使用します。Silverlight クライアントと WCF サーバーを使用するアプリケーションがあります。大きなオブジェクトをパラメーターとして受け取るメソッドを追加するまでは正常に動作していました。このオブジェクトには、int、bool、string、enum 型の 93 個のプロパティが含まれています。ブロックすると、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は、既に最大値に設定されています。

プロパティが少ない他のオブジェクトを試してみました... 1つずつ追加したところ、うまくいきました。

72 個のプロパティ (enum、bool、string、int) がある場合は機能することがわかりましたが、もう 1 つ追加すると機能しなくなります。

私は今まで1週間苦労していました。助けてくれてありがとう...

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(BinaryMessageEncodingBindingElement の int) が最大 2048 であり、これ以上追加できないため、次のように変更する必要があるためです。より大きなMaxSessionSizeでカスタマイズ.....

于 2012-12-27T14:34:49.513 に答える