1つのエンティティが2つのWebサービスで共有されていますか?
-
05-07-2019 - |
質問
同じエンティティを必要とする2つのWebサービスがあるプロジェクトに取り組んでいます。 2つのWebサービスは同じサーバー上にあるため、バックエンドでは同じクラスを共有します。
フロントエンド側では、私のコードは both の両方のWebサービスを消費し、両方のサービスのエンティティを(異なるネームスペースで)個別と見なしているため、両方のサービスでエンティティを使用できません。
.NET 2.0でこれを機能させる方法を知っている人はいますか?
エンティティでこれを実行しました:
[XmlType(TypeName = "Class1", Namespace = "myNamespace")]
public class Class1
{
public int field;
}
私のIDEが何らかの形で「知っている」ことを願っています。クラスは両方のWebサービスで同じであるため、両方のクラスに個別のエンティティは作成されませんが、運はありません。
.NET 2.0 Webサービスでこれを行うことは可能ですか?
解決
VS内からはできないと思いますが、次のように wsdl.exe
ユーティリティを手動で使用できます。
wsdl.exe /sharetypes http://localhost/MyService1.asmx?wsdl http://localhost/MyService2.asmx?wsdl
タイプ共有機能をオンにする / sharetypes
オプションに注意してください。この機能は、異なるサービス間で共有される同一の型の単一の型定義を持つ1つのコードファイルを作成します(名前空間、名前、およびワイヤー署名は同一でなければなりません)。
詳細:
他のヒント
.NET 2.0の実装の詳細についてはわかりませんが、やりたいことは、共通のクラスを別のXSDファイルに入れて、2つのWSDL内から参照することです。このように、共通タイプは2つのサービス間で同じ名前空間を持ちます。
今、.NET 2.0でこれをどのように行うかについて、詳細を説明できませんでした...
エンティティの名前空間を確認できますか?両方のWebサービスで同じであることを確認してください。