C# 契约优先的WCF SOAP开发:控制基本类型XML序列化
我正在从给定的wsdl(契约优先开发)实现C#WCFSOAP1.1服务(服务器端)。我面临的问题是,xsd:dateTime、xsd:decimal和xsd:time还有其他(非wsdl)格式要求 由C# 契约优先的WCF SOAP开发:控制基本类型XML序列化,c#,xml,wcf,soap,datacontract,C#,Xml,Wcf,Soap,Datacontract,我正在从给定的wsdl(契约优先开发)实现C#WCFSOAP1.1服务(服务器端)。我面临的问题是,xsd:dateTime、xsd:decimal和xsd:time还有其他(非wsdl)格式要求 由SvcUtil.exe生成的契约执行标准XML序列化格式化日期和小数有点不同 给定提供的示例SOAP消息,我的WCF服务存根在理解和转换这些格式方面没有问题。然而,我的回答确实包含额外的信息——时区、毫秒、小数点后的额外数字 Wsdl是巨大的–100多条消息,1000多个复杂类型。复杂类型的基元属性
SvcUtil.exe
生成的契约执行标准XML序列化格式化日期和小数有点不同
给定提供的示例SOAP消息,我的WCF服务存根在理解和转换这些格式方面没有问题。然而,我的回答确实包含额外的信息——时区、毫秒、小数点后的额外数字
Wsdl是巨大的–100多条消息,1000多个复杂类型。复杂类型的基元属性映射到XML属性。它看起来像是源自某个java框架
IXmlSerializable
或自定义值类型自定义XmlSerializer
的方法。两种解决方案都不起作用。只有固定的基元类型列表才能放入xml属性中XmlSerializer
是一个黑盒,无法控制基元类型序列化格式规范:
xsd:decimal: No more than two digits after decimal
xsd:dateTime: YYYY-MM-DDThh:mm:ss, no milliseconds, no time zone
xsd:time: hh:mm:ss.sss
xsd:date: YYYY-MM-DD
修改序列化类中DateTime的set/get方法以进行转换。类是生成的,因此我必须扩展svcutil或构建自己的类如何使用工具生成?那么编辑工具输出的问题是什么呢?既然你使用的是