Вопрос

У меня есть служба WCF (скажем, WCFService1), развернутая на двух удаленных машинах.Поскольку одна и та же служба развернута на двух разных машинах, они имеют общий интерфейс и доступные общие методы.

WCFService1 развернут на Machine1 и Machine2.

Чтобы использовать службу WCF с клиентского компьютера, я создал клиентское приложение:

  1. Я добавил ссылку на время разработки службы WCF (WCFService1 ) ( с помощью URL http://11.12.25.23/WCFService/Service1.svc).

  2. Теперь я могу вызывать методы, представленные в сервисе.До сих пор все было в порядке...

Теперь мой вопрос это Если мне нужно обновить клиент во время выполнения с помощью той же службы, размещенной на другом компьютере с другим URL (скажем http://12.12.24.24/WCFService/Service1.svc), Как я могу это сделать?

В настоящее время я занимаюсь этим:

BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://12.12.24.24/WCFService/Service1.svc");
MyServiceClient serviceClient = new MyServiceClient(binding, address);

но всякий раз, когда я использую для вызова метода, предоставленного в сервисе, я получаю ошибку binding mis match.

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

Решение

Вы пробовали сначала вызвать своего клиента?

например:

MyWCFClient client = new MyWCFClient();
client.EndPoint.Address = new EndpointAddress("http://somewhere:888/here.svc");

Другие советы

Я подозреваю, что если вы посмотрите в свой файл web.config на Machine1, вы увидите, что там есть привязка WSHttpBinding (или что-то отличное от BasicHttpBinding). Если вы измените его на BasicHttpBinding (при условии, что вы действительно этого хотите), вы удалите эту ошибку.

Как настроен ваш сервис?Покажите нам вашу конфигурацию на стороне сервера и клиента!

Несоответствие привязки означает, что вы либо используете не ту же привязку, либо какой-то важный параметр в привязке отличается - должно быть, что-то настроено неправильно - так что покажите нам конфигурацию!

Марк

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top