Вызов службы WCF, не зная типа контрактаC#

Место общения программистов C#
Ответить
Anonymous
 Вызов службы WCF, не зная типа контракта

Сообщение Anonymous »

Я пытаюсь реализовать мониторинг работоспособности в WCF. Чтобы добиться этого, на стороне сервера службы, которые будут использовать мой пользовательский хост службы, я добавляю операцию «Ping» в существующие операции контракта.
На стороне клиента я пытаюсь вызвать динамически добавленную операцию Ping, не зная типа контакта. Как я могу вызвать метод Ping?
Я попробовал ниже на стороне клиента, но это не работает

Код: Выделить всё

var channel = GetServiceProxy(); var result = channel.Ping();

[ServiceContract(Namespace = "http://tempuri.org/")]
public interface IDynamicPing
{
[OperationContract(Action = "http://tempuri.org/Ping")]
string Ping();
}

public static IDynamicPing GetServiceProxy()
{
var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
binding.MaxReceivedMessageSize = 9999999;

var endpoint = new EndpointAddress("net.pipe://localhost/SampleWcfCustomerService/Service.svc");

ChannelFactory factory = new ChannelFactory(binding, endpoint);

return factory.CreateChannel(endpoint);
}
web.config на стороне сервера выглядит следующим образом:

Код: Выделить всё

   
     
     
   



   
     
       
     
   


Я получаю эту ошибку при динамическом вызове добавленной операции Ping:

Сообщение с действием «http://tempuri.org/Ping» не может быть обработан на получателе из-за несоответствия ContractFilter в EndpointDispatcher. Это может произойти либо из-за несоответствия контракта (несовпадение действий между отправителем и получателем), либо из-за несоответствия привязки/безопасности между отправителем и получателем. Убедитесь, что отправитель и получатель имеют один и тот же контракт и одинаковую привязку (включая требования безопасности, например, «Сообщение», «Транспорт», «Нет»).'

Кто-нибудь может помочь я?

Подробнее здесь: https://stackoverflow.com/questions/793 ... tract-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»