WCF класс, реализующий две операции контракты в разных услугах контрактов с тем же именем
-
26-09-2019 - |
Вопрос
Я объявил два контракта услуг следующим образом:
[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);
}