控制.NET WCF服务请求的日期格式

时间:2010-10-17 00:25:56

标签: .net wcf web-services

我正在尝试使用WCF从.NET 3.5调用Web服务。我目前得到的错误是

  

从另一方收到了无担保或不正确安全的故障。请参阅内部FaultException以获取故障代码和详细信息。

     

InnerException:{“millisOfSecond的值-2147483648必须在[0,999]范围内}}

我把它缩小到我发送的两个日期值。当我通过soapUI创建请求时,以这种格式发送日期值:

  

2010-07-19T00:00:00.000Z

一切正常,但是当我从.NET调用服务时,它会以这种格式发送日期

  

2010-07-19T00:00:00

并导致上述错误。如果我在soapUI中发送不正确的日期,我会收到相同的错误消息。请注意,这些日期是必填字段,因此如果我什么都不发送它会将默认日期设置为0001-01-01T00:00:00,这显然仍然是错误的格式。

如何控制将日期发送到网络服务的方式?

1 个答案:

答案 0 :(得分:4)

不确定是否有更简单的方法(尚未找到它,但是,如果它存在) - 但这样做的一种方法是引入一个字符串字段,正确格式化您的日期,然后避免序列化直接使用日期字段,而是序列化格式化字符串:

public partial class YourDataClass
{

    public DateTime YourDate { get; set; }

    [DataMember(Name="YourDate")]
    public string FormattedDate
    {
        get { return string.Format("{0:yyyy-MM-ddTHH:mm:ss.fffZ}", YourDate);
        set { ; }
    }
}

这样,DateTime字段YourDate将不会被序列化(没有[DataMember]属性 - 假设您在WCF中使用DataContract序列化程序),而格式化日期字符串将以正确的格式序列化为YourDate

相关问题