如何在WCF OperationContract参数中生成xs:Date

Joe*_*Joe 16 .net xml wcf

对于仅表示日期的OperationContract的参数(无时间组件或时区指示符),需要使用xs:Date,以避免客户端和服务器之间的时区转换的任何歧义或问题.

WCF当前仅支持用于序列化DateTime参数的xs:DateTime.

使用将被序列化为xs:Date的参数生成OperationContract的最简单方法是什么?

我正在考虑使用自定义.NET类型"public struct DateOnly"或类似的方法,使用隐式转换为标准DateTime,从而以某种方式自动生成wsdl作为xs:Date.

这是可能的,我将如何实施它?

如果有可能,我怀疑解决方案可能涉及在自定义类型上使用XmlSchemaProviderAttribute,但是我在此属性上找到的任何文档似乎都有些不透明.

更新

我发现很难相信它会增加获得解决方案的可能性,但我会遵循网站的建议并开始赏金.

为了清楚起见,赏金的条件是提供构建解决方案所需的所有信息,以便WCF OperationContract的参数可以是:

  • 序列化为ws:Date并在生成的WSDL中描述.

  • 可以是System.DateTime值,也可以隐式转换为DateTime.

Joh*_*ers 5

现在我已经注意到了这一点,我在Connect中创建了一个新的建议,请完全支持xs:Date-Only参数和DataMembers的日期.我用四星评级(重要).

如果有人认为这很重要(或者不同意),那么请使用Connect对其进行投票或对其进行评论.

  • 这个链接已经死了. (5认同)

Kei*_*ith 1

不幸的是,WCF 不支持 xs:Date 类型。您必须创建自己的“DateOnly”结构,例如:

<DataContract()> _
public struct DateOnly
   <DataMember()> public Month as Integer
   <DataMember()> public Day as Integer
   <DataMember()> public Year as Integer
end struct
Run Code Online (Sandbox Code Playgroud)