WCF класс, реализующий две операции контракты в разных услугах контрактов с тем же именем

StackOverflow https://stackoverflow.com/questions/2817498

Вопрос

Я объявил два контракта услуг следующим образом:

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

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

У меня есть класс, который реализует эти два контракта. Я создал два конечных точка для обоих договоров. Но я не могу получить доступ к службе от клиентского кода. Он отображает большую ошибку, когда я пытаюсь обновить ссылку на обслуживание как:

Метаданные содержат ошибку, которая не может быть решена .... Не было никакой конечной точки, слушая на ... и т. Д.

Я знаю, что вы не можете иметь два OperationContractS с тем же именем, но возможно ли иметь две операции контракты в разных услугах с ограниченными возможностями, а другая подпись?

Это было полезно?

Решение

Если одна услуга реализует как договоры, то вам следует дать уникальные имена ваших операций договоров.

[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);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top