Несколько конечных точек для одного контракта в службе WCF, размещенной на WAS? - PullRequest
3 голосов
/ 23 июня 2010

Если нужно предоставить несколько конечных точек (например, одну с basicHttpBinding, а другую с netTcpBinding) для одного контракта в гетерогенной среде, в службе, размещенной на WAS, как это сделать?

Все, что я прочитал о конфигурации конечных точек WAS, указывает на то, что адреса конечных точек и базовые адреса хоста должны быть оставлены пустыми, поскольку предполагается, что WAS автоматически разрешает адреса через путь к файлу .svc и протоколу.

Однако кажется невозможным определить конечную точку HTTP и конечную точку TCP для одного и того же контракта без объяснения адресов.До сих пор каждая моя попытка приводила меня к желанной ошибке «экземпляр привязки уже был связан с прослушиванием».

Идеи?

Спасибо

Ответы [ 2 ]

1 голос
/ 24 июня 2010

Посмотрите, работает ли это для вас http://knowledgebaseworld.blogspot.com/2010/06/domain-name-replaced-with-machine-name.html У меня возникла та же проблема «экземпляр привязки уже был связан с прослушиванием uri», который исправляется добавлением httpGetUrl вместе с адресом привязки

0 голосов
/ 23 июня 2010

Насколько я понимаю, файл * .svc пригоден только для протоколов HTTP, например Вы можете использовать его для вашего basicHttpBinding соединения. В этом случае вы абсолютно правы - базовый адрес службы и атрибут адреса конечной точки игнорируются - URI службы определяется именем сервера, необязательно портом, виртуальным каталогом, в котором находится файл SVC, а также именем и расширением Сам файл SVC.

Так что, если вам не нужно несколько разных HTTP-подобных протоколов и конечных точек, этот SVC-файл должен заботиться о HTTP-трафике.

Однако эти параметры не применяются к протоколам, отличным от http, например netTcpBinding. В этом случае вам нужно определить адрес конечной точки (возможно, как относительный путь от соответствующего базового адреса) в вашем файле web.config.

...