我创建了一个WCF服务,该服务返回一个 IEnumerable<CyberResourceProvisioningAction>
。
CyberResourceProvisioningAction类型有一个AccountInformation属性,它是一个 IEnumerable<CyberResourceProvisioningActionAccountInfo>
。当我给AccountInformation属性添加DataMemberAttribute时,就会收到以下异常:
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; }
}
网络资源配给操作账户信息
[DataContract]
public class CyberResourceProvisioningActionAccountInfo
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Value { get; set; }
}
如果需要额外的配置信息,请告诉我,我会编辑帖子。
WcfTestClient
测试你的服务调用。 - Yannick Motton