1

我有许多 Windows Mobile PDA,它们都与中央服务器通信。自周日以来,每台 PDA 都未能更新。它失败的方法是我的同步服务的第一步,它调用:

ServerTimeContract timeContract = Service.GetServerDateTime();

WCF 端的代码是:

public ServerTimeContract GetServerDateTime()
{
    DateTime now = DateTime.Now;
    return new ServerTimeContract(now.ToUniversalTime(), 
        now.IsDaylightSavingTime());
}

为了完整起见,这是ServerTimeContract

[Serializable]
[DataContract]
public class ServerTimeContract
{
    [DataMember(IsRequired = true, EmitDefaultValue = false)]
    public DateTime DateTime { get; private set; }
    [DataMember(IsRequired = true, EmitDefaultValue = false)]
    public bool IsDaylightSavings { get; private set; }

    public ServerTimeContract(DateTime dateTime, bool isDaylightSavings)
    {
        DateTime = dateTime;
        IsDaylightSavings = isDaylightSavings;
    }
}

如果我在我的 PC 上将日期更改为 27/10/2012 并运行上述代码,那么它工作正常。如果我将日期更改回今天,我会收到一个异常消息“底层连接已关闭:连接已意外关闭”。

PDA 抛出错误“无法从传输连接读取数据”。

更奇怪的是,如果我将返回方法更改为始终传入true第二个构造函数参数,一切正常:

public ServerTimeContract GetServerDateTime()
{
    DateTime now = DateTime.Now;
    return new ServerTimeContract(now.ToUniversalTime(), true);
}
4

1 回答 1

1

固定的。我刚刚IsRequired = true从合同中的 IsDaylightSavings 属性中删除了 。如果有人想发表评论并解释原因,那就太好了。尽管我很确定在这种情况下该属性是不必要的。

于 2012-10-29T18:26:51.173 回答