我創建了一個WCF服務,返回IEnumerable<CyberResourceProvisioningAction>
。WCF - 使用DataMember修飾IEnumerable <T>導致異常:底層連接已關閉:連接意外關閉
CyberResourceProvisioningAction類型具有AccountInformation IEnumerable<CyberResourceProvisioningActionAccountInfo>
的屬性。當我裝點DataMemberAttribute的AccountInformation財產我收到異常:
WCF System.Net.WebException:本 基礎連接已關閉: 連接被意外關閉
顯然是一個非常通用的異常,但是我的Google-fu表明這個問題在集合中返回大量對象時最常出現。建議的修復方法是設置<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
。不幸的是,這並沒有解決我的問題。 (沒想到會因爲我返回少量的數據)。
屬性設置正確,所以我很確定我的問題與我的序列化配置有關。我的類有什麼問題導致WCF服務出現這種錯誤?
[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; }
}
CyberResourceProvisioningActionAccountInfo
[DataContract]
public class CyberResourceProvisioningActionAccountInfo
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Value { get; set; }
}
如果需要額外的配置信息,讓我知道,我將修改後。
如果您啓用了幫助頁面,請瀏覽該頁面以查看是否收到激活例外;否則附加一個調試器並捕獲異常。這聽起來可能是DataContract編程模型違規。 – alexdej 2011-02-03 20:44:29
@alexdej我附加了一個調試器,但從不捕獲任何異常。 WCF Test Client中出現異常,但不是我的調試器。 – ahsteele 2011-02-03 21:02:55