我有许多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;
}
}
如果我在我的电脑上将日期更改为27/10/2012并运行上述代码,那么它可以正常工作。如果我将Date更改回今天的今天,我会得到一个例外,说“底层连接已关闭:连接意外关闭”。
PDA抛出错误“无法从传输连接中读取数据”。
更奇怪的是,如果我将return方法更改为始终在第二个构造函数参数中传递true
,那么一切正常:
public ServerTimeContract GetServerDateTime()
{
DateTime now = DateTime.Now;
return new ServerTimeContract(now.ToUniversalTime(), true);
}
答案 0 :(得分:1)
固定。我刚从合同中的IsDaylightSavings属性中删除了IsRequired = true
。如果有人想评论并解释原因,那就好了。虽然我很确定在这种情况下这个属性是不必要的。