11

そのような EndpointAddress を作成しました

EndpointAddress address = new EndpointAddress("http://example.com/services/OrderService.svc");

しかし、プログラムでこのエンドポイントに動作を追加できませんでした。

動作は次のとおりです。

<behaviors>
  <endpointBehaviors>
    <behavior name="NewBehavior">
      <dataContractSerializer maxItemsInObjectGraph="6553600" />
    </behavior>
  </endpointBehaviors>
</behaviors>
4

3 に答える 3

29

サーバーでは、ServiceBehavior属性に追加する必要があります。

 [ServiceBehavior(MaxItemsInObjectGraph = int.MaxValue)]

クライアントでは、それをエンドポイントに適用する必要があります。この例では、ChannelFactoryのすべてのエンドポイントに追加する方法を確認できます。

var factory = new ChannelFactory<IInterface>(...);
foreach (OperationDescription op in factory.Endpoint.Contract.Operations)
    {
        var dataContractBehavior = op.Behaviors.Find<DataContractSerializerOperationBehavior>();
        if (dataContractBehavior != null)
        {
            dataContractBehavior.MaxItemsInObjectGraph = int.MaxValue;
        }
    }
于 2011-01-27T08:49:29.950 に答える