如何在不使用配置文件的情况下以编程方式添加maxItemsInObjectGraph?

我已经创建了类似的EndpointAddress

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

但我无法以编程方式将此行为添加到此端点。

行为如下:

        

在服务器上,您必须将其添加到ServiceBehavior属性中:

  [ServiceBehavior(MaxItemsInObjectGraph = int.MaxValue)] 

在客户端上,您必须将其应用于端点。 在此示例中,您可以看到如何将其添加到ChannelFactory中的所有端点:

 var factory = new ChannelFactory(...); foreach (OperationDescription op in factory.Endpoint.Contract.Operations) { var dataContractBehavior = op.Behaviors.Find(); if (dataContractBehavior != null) { dataContractBehavior.MaxItemsInObjectGraph = int.MaxValue; } } 

在服务器端,您还可以:

 ServiceHost host = new ServiceHost(); ServiceBehaviorAttribute sba = host .Description.Behaviors.Find(); if (sba == null) { sba = new ServiceBehaviorAttribute(); sba.MaxItemsInObjectGraph = int.MaxValue; host.Description.Behaviors.Add(sba); } 

备选方案: ((ServiceBehaviorAttribute) host.Description.Behaviors[typeof(ServiceBehaviorAttribute)]).MaxItemsInObjectGraph = int.MaxValue;