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

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

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

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

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

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

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

8
задан Peter Mortensen 14 May 2010 в 00:34
поделиться

2 ответа

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

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

[ServiceContract]
public interface IContract2
{
    [OperationContract(Name="AddDouble")]
    double Add(double ip);
}
13
ответ дан 5 December 2019 в 08:51
поделиться

Вы можете использовать следующее.

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

[ServiceContract]
public interface IContract2
{
    [OperationContract(Name = "Add2")]
    double Add(double ip);
}
6
ответ дан 5 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: