8

次の 2 つのサービス契約を宣言しました。

[ServiceContract]
public interface IContract1
{
    [OperationContract]
    double Add(int ip);
}

[ServiceContract]
public interface IContract2
{
    [OperationContract]
    double Add(double ip);
}

これら 2 つのコントラクトを実装するクラスがあります。両方のコントラクトに 2 つのエンドポイントを作成しました。しかし、クライアント コードからサービスにアクセスできません。サービス参照を次のように更新しようとすると、大きなエラーが表示されます。

メタデータに解決できないエラーが含まれています... などでリッスンしているエンドポイントがありませんでした。

同じ名前の を2 つ持つことはできないことはわかっていますがOperationContract、同じ名前で署名が異なる異なるサービス コントラクトで 2 つの操作コントラクトを持つことは可能ですか?

4

2 に答える 2

13

1 つのサービスが両方のコントラクトを実装する場合、操作コントラクトに一意の名前を付ける必要があります。

[ServiceContract]
public interface IContract1
{
    [OperationContract(Name="AddInt")]
    double Add(int ip);
}

[ServiceContract]
public interface IContract2
{
    [OperationContract(Name="AddDouble")]
    double Add(double ip);
}
于 2010-05-12T09:34:21.757 に答える
6

以下を使用できます。

[ServiceContract]
public interface IContract1
{
    [OperationContract(Name = "Add1")]
    double Add(int ip);
}

[ServiceContract]
public interface IContract2
{
    [OperationContract(Name = "Add2")]
    double Add(double ip);
}
于 2010-05-12T09:34:08.207 に答える