8

我已经声明了两个服务合同如下:

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

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

我有一个实现这两个合同的类。我为两个合同创建了两个端点。但我无法从客户端代码访问服务。当我尝试将服务参考更新为:

元数据包含无法解决的错误.... 没有端点正在监听 ... 等。

我知道你不能有两个OperationContract同名的s,但是是否可以在不同的服务合同中拥有两个同名但签名不同的操作合同?

4

2 回答 2

13

如果一项服务同时实现了两个合同,那么您应该为您的操作合同提供唯一的名称。

[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 回答