2011-02-03 27 views
8

IEnumerable<CyberResourceProvisioningAction>'u döndüren bir WCF hizmeti oluşturdum.WCF - Süsleme IEnumerable <T> DataMember ile birlikte neden Özel durum: Temel bağlantı kapatıldı: Bağlantı beklenmedik bir şekilde kapatıldı

CyberResourceProvisioningAction türü, AccountInformation IEnumerable<CyberResourceProvisioningActionAccountInfo>'un bir özelliğine sahiptir.

WCF System.NET.WebException: temel alınan bağlantı kapatıldı: Ben DataMemberAttribute ile AccountInformation özelliğini süslemeleri zaman özel durumu alıyorsunuz bağlantısı çok genel bir istisna Açıkçası beklenmedik

kapatıldı Ancak Google-fu'm, sorunun bir koleksiyondaki çok sayıda nesneyi döndürdüğü sırada en sık gerçekleştiğini gösteriyor. Önerilen düzeltme <dataContractSerializer maxItemsInObjectGraph="2147483646"/> ayarlanmasıdır. Maalesef bu sorunumu çözmedi. (Küçük miktarda veriyi iade ettiğimi düşünmüyordu).

Özellikler doğru şekilde ayarlandığından, sorunumun serileştirme yapılandırmamla ilgili olduğundan eminim. WCF hizmetinin bu şekilde hata yapmasına neden olan sınıflarımda bir sorun var mı? CyberResourceProvisioningActionAccountInfo

[DataContract] 
public class CyberResourceProvisioningActionAccountInfo 
{ 
    [DataMember] 
    public string Name { get; set; } 

    [DataMember] 
    public string Value { get; set; } 
} 

ek yapılandırma bilgisi gerekiyorsa

[DataContract] 
public class CyberResourceProvisioningAction 
{ 
    [DataMember] 
    public string Action { get; set; } 

    [DataMember] 
    public DateTime RcdChgDateTime { get; set; } 

    [DataMember] 
    public string CyberResourceName { get; set; } 

    [DataMember] 
    public IEnumerable<CyberResourceProvisioningActionAccountInfo> AccountInformation 
    { get; set; } 
} 

bana ve ben yayını düzenleyebilir edeceğiz edelim.

+2

Yardım sayfanız etkinse, etkinleştirme istisnası alıp almadığınızı görmek için ona göz atın; aksi halde bir hata ayıklayıcı ve yakalama özel durumları ekleyin. DataContract programlama modeli ihlali gibi görünüyor. – alexdej

+0

@alexdej Bir hata ayıklayıcı ekledim, ancak hiçbir özel durumun üstesinden gelmem. İstisna, WCF Test İstemcisinde görünür, ancak hata ayıklayıcım değil. – ahsteele

+1

WCF ana bilgisayar projenizi doğrudan hata ayıklamaya çalışın ve Servicecall'ınızı "WcfTestClient" –

cevap

14

alexdej tarafından bırakılan "DataContract programlama modeli ihlali" hakkındaki yorumdan ötürü, özelliklerde olana biraz daha yakından bakmaya başladım. Özellik Linq türü vardı ve IEnumerable olmasına rağmen seri hale getirme için numaralandırılmış değildi. Bir .ToList() eklendi ve her şey yolunda.

+1

ile sınayın. Aşağıdaki hatadan sonra Hizmetimden "Tür" System.Data.Entity.Infrastructure.DbQuery1 [MYCLASS] 'serileştirilemez. DataContractAttribute özniteliğiyle işaretlemeyi ve DataMemberAttribute özniteliği ile serileştirilmesini istediğiniz tüm üyelerini işaretlemeyi düşünün. Tür bir koleksiyon ise, CollectionDataContractAttribute ile işaretlemeyi düşünün. Desteklenen diğer türler için Microsoft .NET Framework belgelerine bakın. Dönüş ifadesinden önce '.ToList()' eklemek benim sorunumu çözer. Teşekkürler! – MaciejLisCK

+0

@MaciejLisCK bu sizin için çalıştığına sevindim. – ahsteele