Служба WCF dataContractSerializer maxItemsInObjectGraph в web.config - PullRequest
8 голосов
/ 17 июня 2010

У меня проблемы с указанием dataContractSerializer maxItemsInObjectGraph в файле web.config хоста.

 <behaviors>
  <serviceBehaviors>
    <behavior name="beSetting">
      <serviceMetadata httpGetEnabled="True"/>
      <serviceDebug includeExceptionDetailInFaults="True" />
      <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
 <services>
  <service name="MyNamespace.MyService"
           behaviorConfiguration="beSetting" >
    <endpoint address="http://localhost/myservice/"
              binding="webHttpBinding"
              bindingConfiguration="webHttpBinding1"
              contract="MyNamespace.IMyService"
              bindingNamespace="MyNamespace">
    </endpoint>
  </service>
</services>

Вышеуказанное не влияет на получение данных.Тайм-аут сервера из-за большого объема данных.

Однако я могу указать максимальное ограничение в коде, и это работает

  [ServiceBehavior(MaxItemsInObjectGraph=2147483646, IncludeExceptionDetailInFaults = true)]
  public abstract class MyService : MyService 
  {
   blah...
 }

Кто-нибудь знает, почему я не могу заставить это работать через настройку web.config?Я хотел бы сохранить в web.config, так что это будет легче для будущих обновлений.

1 Ответ

12 голосов
/ 10 апреля 2012

В разделе вашего поведения добавьте поведение конечной точки с помощью dataContractSerializer, например так:

<endpointBehaviors>
  <behavior name="LargeQuotaBehavior">
   <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
  </behavior>
</endpointBehaviors>

Затем измените вашу конечную точку, чтобы использовать это поведение следующим образом:

<endpoint address="http://localhost/myservice/"
          binding="webHttpBinding"
          bindingConfiguration="webHttpBinding1"
          contract="MyNamespace.IMyService"
          bindingNamespace="MyNamespace"
          behaviorConfiguration="LargeQuotaBehavior">

решить вашу проблему.

...