所以我有以下类(class):
[DataContract]
public class Client
{
[DataMember]
public int ClientID { get; set; }
[DataMember]
public int MerchantID { get; set; }
[DataMember]
public string ClientName { get; set; }
[DataMember]
public Nullable<System.DateTime> LastPing { get; set; }
[DataMember]
public Nullable<System.Guid> SessionToken { get; set; }
[DataMember]
public System.Guid GUID { get; set; }
[DataMember]
public string Password { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Email { get; set; }
[DataMember]
public string Address { get; set; }
[DataMember]
public DateTime cDate { get; set; }
[DataMember]
public string AdditionalInfo { get; set; }
}
我在我的 WCF 上使用它是这样的: (界面)
[OperationContract]
[ServiceKnownType(typeof(Client))]
void CreateClient(Client inClient);
和 WCF 实现:
public void CreateClient(Client inClient)
{
try
{
CMSUsersManager manager = new CMSUsersManager();
manager.CreateClient(inClient);
}
catch (Exception ex)
{
}
}
我有另一个项目(一种网站),我正在调用该服务:
CPanelService.CPanelService service;
service = new CPanelService.CPanelService();
service.CreateClient(inClient);
现在解决我的问题:
网站上的“inClient”包含inClient.cDate = DateTime.Now
。
当请求发送到 WCF 时,服务收到 inClient.cDate = 1/1/001 00:00:00
我试图弄清楚,但没有运气。
谁能教教我? 谢谢。
最佳答案
为了通过线路发送属性,您必须在其 header 上方显式输入数据注释 [DataMember]
:
[DataMember]
public string Email { get; set; }
[DataMember]
public string Address { get; set; }
[DataMember]
public System.DateTime cDate { get; set; }
为您的所有属性执行此操作。
并且在类头上还放置了[DataContract]
:
[DataContract]
public class Client
我不确定这是否会解决您的问题,但我可以保证如果您不添加这些注释,您最终会为序列化(这似乎是您当前的问题)而头疼。
关于c# - 将 DateTime 发送到默认序列化的 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30788182/