Reputation: 2579
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 OperationContract
s with the same name but is it possible to have two operation contracts in different service contracts with same name but different signature?
Upvotes: 8
Views: 6186
Reputation: 65496
You can use the following.
[ServiceContract]
public interface IContract1
{
[OperationContract(Name = "Add1")]
double Add(int ip);
}
[ServiceContract]
public interface IContract2
{
[OperationContract(Name = "Add2")]
double Add(double ip);
}
Upvotes: 6
Reputation: 1699
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);
}
Upvotes: 14