доступ к службе WCF через URL - PullRequest
1 голос
/ 30 июля 2009

У меня есть служба 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);

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

Ответы [ 3 ]

1 голос
/ 30 июля 2009

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

например:

MyWCFClient client = new MyWCFClient();
client.EndPoint.Address = new EndpointAddress("http://somewhere:888/here.svc");
0 голосов
/ 30 июля 2009

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

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

Марк

0 голосов
/ 30 июля 2009

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

...