1


2

私の質問は、Java WebサービスとC#の間の統合についてです。 .NET client.

サービス:Aegisデータバインディングクライアントを含むCXF 2.2.3クライアント:C#、.NET 3.5 SP1

何らかの理由で、Visual Studioは各Java列挙に対して2つのC#プロキシ列挙を生成します。 生成されたC#クラスはコンパイルされません。

たとえば、このJava enumは次のとおりです。

パブリック列挙体SqlDialect {GENERIC、SYBASE、SQL_SERVER、ORACLE。 }

このWSDLを生成します。


このWSDLの場合、Visual Studioは2つの部分C#クラスを生成します(生成されたコメントは削除されます)。

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="SqlDialect", Namespace="http://somenamespace")]
パブリック列挙体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")]
パブリック列挙体SqlDialect {GENERIC、SYBASE、SQL_SERVER、ORACLE、}

結果のC#コードはコンパイルされません。

名前空間 'somenamespace'は既に 'SqlDialect'の定義を含んでいます

私はどんなアイデアにも感謝します…​

5 Answer


1


Visual Studioが重複したプロキシクラスを生成する原因となるものが見つかりました。 私たちのWebサービスのデータモデルは多態性があり、抽象クラスを使用します - これが本質的にAegisデータバインディングを使用する理由です。 階層内に複数の抽象クラスがある場合、Visual Studioは重複したプロキシを生成します。

たとえば、次のWebサービス契約では、

AbstractRestrictionDef getRestriction(...パラメータ...)

これらのクラスは機能しません。

abstractクラスAbstractModelObject  - 抽象クラスAbstractRestrictionDef  - クラスSqlRestrictionDef

しかし、これらのクラスは以下のようになります。

abstractクラスAbstractModelObject  - クラスAbstractRestrictionDef  - クラスParsedRestrictionDef


0


特定のWSDLでは、追加のコードが生成されています(私の場合は、存在しない追加のクラスメンバー)。 これを使用しようとしたときに問題が発生したので、私は過剰として識別したコードを削除し、それが動作し始めました。 列挙型の1つを削除して何が起こるのかを確認してみます。


0


サービス参照を.net 2参照として追加してみてください。 add service referanceを使用してください>詳細> Web参照を追加…​


0


この種の問題を処理するように思われる代替プロキシジェネレータhttp://wscfblue.codeplex.com/を試すこともできます。


0


私はVisual Studio 2008を使用してこのWSDLを追加すると思います、それはSOAP 1.1をサポートするべきです、 soapUIアプリケーションを使用してこのSOAPのバージョンをチェックする似たようなアプリ。