问题
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?
回答1:
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);
}
回答2:
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);
}
来源:https://stackoverflow.com/questions/2817498/wcf-class-implementing-two-operation-contracts-in-different-service-contracts-wi