Я объявил два контракта на обслуживание следующим образом:
[ServiceContract]
public interface IContract1
{
[OperationContract]
double Add(int ip);
}
[ServiceContract]
public interface IContract2
{
[OperationContract]
double Add(double ip);
}
У меня есть класс, который реализует эти два контракта. Я создал две конечных точки для обоих контрактов. Но я не могу получить доступ к сервису из клиентского кода. Это отображает большую ошибку, когда я пытаюсь обновить сервисную ссылку как:
Метаданные содержат ошибку, которая не может быть разрешена.... Не было никакой конечной точки, слушающей в... и т.д.
Я знаю, что Вы не можете иметь два OperationContract
s с тем же именем, но действительно ли возможно иметь два контракта на операцию в различных контрактах на обслуживание с тем же именем, но другой подписи?
Если один сервис реализует оба контракта, то вы должны дать уникальные имена вашим контрактам операций.
[ServiceContract]
public interface IContract1
{
[OperationContract(Name="AddInt")]
double Add(int ip);
}
[ServiceContract]
public interface IContract2
{
[OperationContract(Name="AddDouble")]
double Add(double ip);
}
Вы можете использовать следующее.
[ServiceContract]
public interface IContract1
{
[OperationContract(Name = "Add1")]
double Add(int ip);
}
[ServiceContract]
public interface IContract2
{
[OperationContract(Name = "Add2")]
double Add(double ip);
}