我的问题是关于Java Web服务和C#.NET客户端之间的集成。为Java类型生成的重复C#web服务代理类
服务:CXF 2.2.3与宙斯盾数据绑定 客户端:C#,.NET 3.5 SP1
出于某种原因,Visual Studio生成的每个Java枚举两个C#代理枚举。生成的C#类不能编译。
例如,该Java枚举:
public enum SqlDialect {
GENERIC, SYBASE, SQL_SERVER, ORACLE;
}
可生产该WSDL:
<xsd:simpleType name="SqlDialect">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="GENERIC" />
<xsd:enumeration value="SYBASE" />
<xsd:enumeration value="SQL_SERVER" />
<xsd:enumeration value="ORACLE" />
</xsd:restriction>
</xsd:simpleType>
对于该WSDL,Visual Studio生成两个部分C#类(生成评论移除):
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="SqlDialect", Namespace="http://somenamespace")]
public enum SqlDialect : int {
[System.Runtime.Serialization.EnumMemberAttribute()]
GENERIC = 0,
[System.Runtime.Serialization.EnumMemberAttribute()]
SYBASE = 1,
[System.Runtime.Serialization.EnumMemberAttribute()]
SQL_SERVER = 2,
[System.Runtime.Serialization.EnumMemberAttribute()]
ORACLE = 3,
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3082")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://somenamespace")]
public enum SqlDialect {
GENERIC,
SYBASE,
SQL_SERVER,
ORACLE,
}
生成的C#代码无法编译:
The namespace 'somenamespace' already contains a definition for 'SqlDialect'
我会感谢任何想法...
你是如何在Visual Studio中使用wsdl的?添加服务参考?添加Web引用?这个视觉工作室08(我认为)?您是否尝试过使用命令行手动使用服务? – dovholuk 2009-09-26 15:04:56
抱歉,遗漏了详细信息 - 我正在使用Visual Studio 2008,添加服务参考,并尝试使用svcutils.exe获得相同的结果。 – Sergey 2009-09-29 13:12:41