Pax125 Ответов: 0

Универсальный контракт не найден клиентом WCF с помощью ссылки add service reference


Я пытаюсь обработать сообщение запроса/ответа в WCF с помощью универсального контракта. Это прекрасно работает, если я указываю действие в сообщениях запроса и ответа. Однако если я поставлю set Action="*" и ReplyAction="*" на контракт, клиентский код больше не будет компилироваться, что приведет к ошибке:

-CxTestSenderReceiver.Значение servicereference1.CxMessageReceiverServiceClient' не содержит определения для 'ProcessMessage' и никакого метода расширения 'ProcessMessage', принимающего первый аргумент типа 'CxTestSenderReceiver.Значение servicereference1.Можно найти CxMessageReceiverServiceClient' (отсутствует ли директива using или ссылка на сборку?)
c:\users\documents\visual studio 2010\Projects\CxMessageService\CxTestSenderReceiver\MainWindow.xaml.cs

Вот мой контракт:
public interface ICxMessageReceiverService

    {

        [OperationContract(Action="*", ReplyAction="*")]

        System.ServiceModel.Channels.Message ProcessMessage(System.ServiceModel.Channels.Message msg);

    }

Клиент был настроен с помощью Add Service Reference, поэтому все, что мой клиентский код действительно делает, - это следующее:


ServiceReference1.CxMessageReceiverServiceClient client = new ServiceReference1.CxMessageReceiverServiceClient();

System.ServiceModel.Channels.Message msg, response;

msg = System.ServiceModel.Channels.Message.CreateMessage(System.ServiceModel.Channels.MessageVersion.Soap11, "http://tempuri.org/ICxMessageReceiverService/ProcessMessage", data);

response = client.ProcessMessage(msg);


Но он не будет компилироваться, потому что (как говорится в приведенной выше ошибке) он не знает, что сообщение процесса существует. Если я изменю атрибут OperationContract так, чтобы у него не было атрибутов Action="*" и ReplyAction="*", то он будет работать просто отлично.

Что я должен сделать в клиенте, чтобы разрешить параметры Action="*" и ReplyAction="*" в моем контракте?

Спасибо,

Что я уже пробовал:

Я попытался обновить ссылку на сервис после обновления операционного контракта до
[OperationContract(Action="*", ReplyAction="*")]

0 Ответов