数据合约成员互相推荐时出错

Error when data contract member refer each other

我有一个简单的数据契约,它有一个相互引用的数据成员,这里是数据成员:

 [DataContract(Namespace = "", Name = "ScaleTransactionHeaderMessage")]
public class ScaleTransactionHeaderMessage
{
    [DataMember]
    public int ScaleTransactionHeaderMessageId { get; set; }

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

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

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

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

    **[DataMember]
    public List<ScaleTransactionDetailMessage> ScaleTransactionDetailMessages { get; set; }**

}

[DataContract(Namespace = "", Name = "ScaleTransactionDetailMessage")]
public class ScaleTransactionDetailMessage
{

    [DataMember]
    public int ScaleTransactionDetailMessageId { get; set; }

    [DataMember]
    public double Tonnage { get; set; }

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

    **[DataMember]
    public ScaleTransactionHeaderMessage scaleTransactionHeaderMessage { get; set; }**

}

这是导致问题的操作

        private static ScaleTransactionDetailMessage ConvertTransactionDetail(ScaleTransactionHeaderMessage headerMessage, ScaleTransactionDetail transactionDetail)
    {
        ScaleTransactionDetailMessage detailMessage = new ScaleTransactionDetailMessage
        {
            Tonnage = transactionDetail.Tonnage,
            TransactionDetailDate = transactionDetail.TransactionDetailDate,
            ScaleTransactionDetailMessageId = transactionDetail.TransactionDetailId,
           //TODO: Check why this is not working
            **scaleTransactionHeaderMessage = headerMessage**
        };
        return detailMessage;
    }

问题是每次我在 ScaleTransactionDetailMessage 数据协定中添加 ScaleTransactionHeaderMessage 时,我总是收到一个错误提示连接超时,我确定这不是配置问题,因为如果我没有在操作中将值添加到 ScaleTransactionHeaderMessage合同服务可以 运行 正确。

我对操作进行了单元测试,它工作正常,问题只在调用服务时出现。

数据契约设计有没有错误?

您需要将 IsReference = true 添加到 DataContract:

[DataContract(IsReference=true]

看看here.