Универсальный контракт не найден клиентом 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="*")]