我有许多 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);
}