Search code examples
c#wcfmultiple-inheritanceservicecontractoperationcontract

WCF class implementing two operation contracts in different service contracts with same name


I have declared two service contracts as follows:

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

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

I have a class which implements these two contracts. I have created two endpoints for both contracts. But I'm not able to access the service from client code. It displays a big error when I try to update the service reference as:

Metadata contains an error that cannot be resolved.... There was no endpoint listening at ... , etc.

I know that you can't have two OperationContracts with the same name but is it possible to have two operation contracts in different service contracts with same name but different signature?


Solution

  • If one service implements both contracts then you should give unique names to your operation contracts.

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