0

現在、WCF、WShttpBindingを使用してwinformアプリケーションでWebサービスを作成しようとしています。メソッドの1つは辞書を返します。クライアント側のRTDサーバーは、このメソッドを呼び出して辞書を取得します。

何らかの理由で、辞書が大きくなりすぎると(0.6MB +)、通信例外がスローされます。クライアント側とサーバー側の両方で次のパラメーターのサイズを増やしてみましたが、それでも機能しません。誰かが私が間違っていることを教えてもらえますか?ありがとう。

binding.MaxReceivedMessageSize
binding.MaxBufferPoolSize
binding.SendTimeout 
binding.OpenTimeout
binding.ReceiveTimeout 
binding.ReaderQuotas.MaxStringContentLength 
binding.ReaderQuotas.MaxDepth 
binding.ReaderQuotas.MaxBytesPerRead
4

1 に答える 1

3

ファイルにbehavior構成を追加します。App.config

  • サーバー上:

 

<behaviors>
    <serviceBehaviors>
        <behavior name="MyServiceBehavior">
            <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
    </serviceBehaviors>
</behaviors>
  • クライアントの場合:

 

<behaviors>
    <endpointBehaviors>
        <behavior name="MyClientBehavior">
            <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
    </endpointBehaviors>
</behaviors>

2147483647これが最大値であり、それほど必要ない場合があることに注意してください。


また、サービスとエンドポイントの動作を参照することを忘れないでください。

  • サーバー上(および一部のサービスをホストしている場合はクライアント上):

 

<service name="SomeService" behaviorConfiguration="MyServiceBehavior">
    <endpoint binding="WShttpBinding" 
              bindingConfiguration="MyBindingConf" 
              contract="SomeContract"/>
</service>
  • クライアントの場合:

 

<endpoint binding="WShttpBinding" 
          bindingConfiguration="MyBindingConf"
          behaviorConfiguration="MyServiceBehavior" 
          contract="SomeContract" 
          name="SomeName" />
于 2011-11-02T11:22:40.723 に答える