2010-06-17 35 views
7

HostContractSerializer maxItemsInObjectGraph öğesinin web.config dosyasında belirtilmesiyle ilgili sorunlar yaşıyorum.WCF service dataContractSerializer maxItemsInObjectGraph in 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> 

Yukarıdaki veriler, veri çekme işlemimde bir etkisi yoktur. Sunucu, büyük hacimli veriler nedeniyle zaman aşımına uğruyor.

Ben ancak kodda maksimum sınırını belirleyebilir ve bu

çalışır
[ServiceBehavior(MaxItemsInObjectGraph=2147483646, IncludeExceptionDetailInFaults = true)] 
    public abstract class MyService : MyService 
    { 
    blah... 
} 
Ben bir web.config ayarı ile bu işi yapamazsınız neden

bilen var mı? Gelecek güncellemeler için daha kolay olması için web.config dosyasında kalmak istiyorum.

davranışların bölümünde
+0

Bu problemi de yaşıyorum. Kimsenin neden cevap vermediğini merak ediyorum. 'ServiceBehavior' kodunu kod olarak ayarlayabilmeniz için gereken ipucu için teşekkürler, en azından beni hareket ettirebilir. – jocull

+0

Biliyorsunuz ki maxItemsInObjectGraph sadece yanıtta izin verilen toplam öğelerin sayısını tanımlar, tam yanıt boyutu değil, evet? (sanırım 60k xml öğelerine varsayılan olarak belirtilmemişse) –

+0

Dave, sorunuzun yanıtı ya da değil miydi? Verilen cevap sorununuzu çözmüşse, bunu işaretleyin. – Bardia

cevap

12

, şöyle, DataContractSerializer bir bitiş noktası davranışı ekleyin:

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

Bu sorunu çözmek gerekir:

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

Sonra şöyle bu davranışı kullanmak için son nokta değiştirmek .

+1

çekicilik gibi. Teşekkür – SergioM

+1

Bugün benzer bir sorunla karşılaştım. Wcf, son nokta davranışında olmasına rağmen maxItemsInObjectGraph hakkında istisnalar atıyordu. daha sonra sorunu çözdüm Hizmet davranışına taşıdım.http: //stackoverflow.com/questions/26610861/passing-comma-separated-string-value-to-a-wcf-rest-service/26613810#26613810 – user1131926