对 DataContractSerializer 彻底失望,我尝试使用 IXmlSerializable 类型和 XmlSerializer 在 WCF 中启动和运行。
我已经在我的类中实现了 IXmlSerializable和XmlSchemaProvider 以进行序列化并为我的 OperationContract 声明 [XmlSerializerFormat]。
使用复杂模式时,我在尝试查看 WSDL 时收到以下错误:
"Schema type information provided by IXmlSerializable is invalid:
Reference to undeclared attribute group 'anAttributeGroupInMySchema'"
该模式具有各种包含(此属性在其中一个中声明)。我什至在代码 ( schema.Includes
) 中添加了包含的模式,但无济于事。
即使在最简单的示例项目中(具有 1 个元素和 2 个属性的简单模式,简单的对应类,你可以命名它)我终于克服了这个错误,但碰到了:
"WCF_IXmlSerializable.TestClass.TestSchemaProvider() must return a valid type
name. Type 'TEST' cannot be found in the targetNamespace='www.test.com'."
可悲的是,我不知道什么是有效的类型名称。这当然不是我的 XSD AFAICS 中的元素名称。
有任何想法吗?
编辑:
示例源代码可以在这里在线查看。