Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Java类型生成的重复C#web服务代理类_C#_Java_Web Services - Fatal编程技术网

为Java类型生成的重复C#web服务代理类

为Java类型生成的重复C#web服务代理类,c#,java,web-services,C#,Java,Web Services,我的问题是关于Java web服务和C#.NET客户端之间的集成 服务:带有Aegis数据绑定的CXF 2.2.3 客户端:C#,.NET3.5SP1 出于某种原因,VisualStudio为每个Java枚举生成两个C#代理枚举。生成的C#类不会编译 例如,此Java枚举: public enum SqlDialect { GENERIC, SYBASE, SQL_SERVER, ORACLE; } 生成此WSDL: <xsd:simpleType name="SqlDialec

我的问题是关于Java web服务和C#.NET客户端之间的集成

服务:带有Aegis数据绑定的CXF 2.2.3 客户端:C#,.NET3.5SP1

出于某种原因,VisualStudio为每个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>
生成的C#代码不会编译:

The namespace 'somenamespace' already contains a definition for 'SqlDialect'

我会很感激任何想法……

对于某些WSDL,我已经生成了额外的代码(在我的例子中,是不存在的额外类成员)。这在尝试使用它时造成了问题,所以我只是删除了我确定为多余的代码,它开始工作。我会尝试删除其中一个枚举,看看会发生什么。

对于某些WSDL,我生成了额外的代码(在我的例子中,是不存在的额外类成员)。这在尝试使用它时造成了问题,所以我只是删除了我确定为多余的代码,它开始工作。我会尝试删除其中一个枚举,看看会发生什么。

我找到了“使”Visual Studio生成重复代理类的原因。。。我们的web服务数据模型是多态的,并且使用抽象类——这就是我们使用Aegis数据绑定的基本原因如果层次结构中有多个抽象类,Visual Studio将生成重复的代理。

例如,在此web服务合同中:

AbstractRestrictionDef getRestriction(...parameters...)
这些课程不起作用:

abstract class AbstractModelObject -– abstract class AbstractRestrictionDef –- class SqlRestrictionDef
但这些课程将:

abstract class AbstractModelObject -– class AbstractRestrictionDef -– class ParsedRestrictionDef
我找到了使Visual Studio生成重复代理类的原因。。。我们的web服务数据模型是多态的,并且使用抽象类——这就是我们使用Aegis数据绑定的基本原因如果层次结构中有多个抽象类,Visual Studio将生成重复的代理。

例如,在此web服务合同中:

AbstractRestrictionDef getRestriction(...parameters...)
这些课程不起作用:

abstract class AbstractModelObject -– abstract class AbstractRestrictionDef –- class SqlRestrictionDef
但这些课程将:

abstract class AbstractModelObject -– class AbstractRestrictionDef -– class ParsedRestrictionDef

尝试将服务引用添加为.NET2引用;使用添加服务引用>高级>添加web引用…

尝试将服务引用添加为.net 2引用;使用添加服务引用>高级>添加web引用…

您还可以尝试替代代理生成器,它似乎可以处理此类问题。

您还可以尝试替代代理生成器,它似乎可以处理此类问题。

我认为使用visual studio 2008添加此WSDL,它应该支持SOAP 1.1,使用应用程序或类似应用程序检查此SOAP的版本。

我认为要使用visual studio 2008添加此WSDL,它应该支持SOAP 1.1,使用应用程序或类似应用程序检查此SOAP的版本。

您如何在visual studio中使用WSDL?添加服务引用?添加网络参考?这是VisualStudio08吗(我猜)?您是否尝试过使用命令行手动使用该服务?很抱歉,缺少详细信息-我正在使用Visual Studio 2008,添加一个服务引用,并且还尝试过使用svcutils.exe,结果相同。您如何在Visual Studio中使用wsdl?添加服务引用?添加网络参考?这是VisualStudio08吗(我猜)?您是否尝试过使用命令行手动使用该服务?很抱歉,缺少详细信息-我正在使用Visual Studio 2008,添加一个服务引用,并尝试使用svcutils.exe,结果相同。感谢您的建议。我还手动编辑了代码,删除了第一个枚举类解决了编译问题。然而,生成的代码中的错误只是更大麻烦的迹象。例如:-C#客户端无法正确地处理Java异常-任何服务器端异常信息都会丢失;-null值不是作为C#null,而是作为XmlNode对象进行封送。感谢您的建议。我还手动编辑了代码,删除了第一个枚举类解决了编译问题。然而,生成的代码中的错误只是更大麻烦的迹象。例如:-C#客户端无法正确地处理Java异常-任何服务器端异常信息都会丢失;-null值不是作为C#null,而是作为XmlNode对象进行编组。