代码之家  ›  专栏  ›  技术社区  ›  Archie

wcf类在具有相同名称的不同服务协定中实现两个操作协定

  •  8
  • Archie  · 技术社区  · 15 年前

    我已宣布两份服务合同如下:

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

    我有一个实现这两个契约的类。我为两个合同创建了两个端点。但我无法从客户端代码访问服务。 当我尝试将服务引用更新为以下内容时,它显示一个大错误:

    元数据包含无法解决的错误….没有终结点正在侦听…等。

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

    2 回复  |  直到 14 年前
        1
  •  13
  •   Yuriy Zanichkovskyy    15 年前

    如果一个服务实现了这两个契约,那么您应该为您的操作契约提供唯一的名称。

    [ServiceContract]
    public interface IContract1
    {
        [OperationContract(Name="AddInt")]
        double Add(int ip);
    }
    
    [ServiceContract]
    public interface IContract2
    {
        [OperationContract(Name="AddDouble")]
        double Add(double ip);
    }
    
        2
  •  6
  •   Peter Mortensen icecrime    15 年前

    您可以使用以下内容。

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