【问题标题】:WCF class implementing two operation contracts in different service contracts with same nameWCF 类在同名的不同服务契约中实现两个操作契约
【发布时间】:2010-05-12 09:30:47
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: c# wcf multiple-inheritance servicecontract operationcontract


    【解决方案1】:

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

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

    【讨论】:

    • 那我该如何使用这个方法呢?它只在客户端代码中显示一种方法。
    • 知道了,我将创建两个客户端,对应两个服务合同。谢谢。
    【解决方案2】:

    您可以使用以下内容。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 2011-01-25
      • 1970-01-01
      相关资源
      最近更新 更多