加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何以编程方式添加maxItemsInObjectGraph而不使用配置文

发布时间:2020-12-15 17:38:14 所属栏目:百科 来源:网络整理
导读:我创建了一个这样的EndpointAddress EndpointAddress address = new EndpointAddress("http://example.com/services/OrderService.svc"); 但是我无法通过编程方式将行为添加到此端点. 行为如下: behaviors endpointBehaviors behavior name="NewBehavior" d
我创建了一个这样的EndpointAddress
EndpointAddress address = new EndpointAddress("http://example.com/services/OrderService.svc");

但是我无法通过编程方式将行为添加到此端点.

行为如下:

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

解决方法

在服务器上,您必须将其添加到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;
        }
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读