Проблема уникальных базовых адресов WCF - PullRequest
0 голосов
/ 03 июня 2011

У меня проблема, когда WCF сообщает ...

net.pipe: //192.168.0.100/SystemA/Service1.svc/mexPipe 'не удалось активировать.

Iопределили мои базовые адреса следующим образом:

Сервис 1 ...

<baseAddresses>
    <add baseAddress="http://192.168.0.100:8050/ProductsService/Service1.svc" />
    <add baseAddress="net.tcp://192.168.0.100:8051/ProductsService/Service1.svc" />
    <add baseAddress="net.pipe://192.168.0.100/ProductsService/Service1.svc" />
</baseAddresses>

Сервис 2 ...

<baseAddresses>
    <add baseAddress="http://192.168.0.100:8050/ProductsService/Service2.svc" />
    <add baseAddress="net.tcp://192.168.0.100:8051/ProductsService/Service2.svc" />
    <add baseAddress="net.pipe://192.168.0.100/ProductsService/Service2.svc" />
</baseAddresses>

Для каждый Затем я определяю конечные точки Mex следующим образом ...

<endpoint address="mexPipe" contract="IMetadataExchange" binding="mexNamedPipeBinding" />

Это, безусловно, должно дать мне 2x конечные точки mex следующим образом ...

net.pipe://192.168.0.100/ProductsService/Service1.svc/mexPipe
net.pipe://192.168.0.100/ProductsService/Service2.svc/mexPipe

Однако я не думаю, что это работаетпросматривая это сообщение ...

проблема метаданных привязки net.tcp

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

Может ли WCF обнаружить, что мои конечные точки mex являются netNamedPipe, и найти для них базовый адрес?Учитывая, что привязка является "mexNamedPipeBinding" - или это не работает?

1 Ответ

1 голос
/ 03 июня 2011

Ваши базовые адреса не должны содержать имя файла сервиса.Это будет указано в объявлении конечной точки.

Как видите, вашими назначениями являются:

net.pipe: //192.168.0.100/ProductsService/Service1.svc/mexPipe net.pipe: //192.168.0.100/ProductsService/Service2.svc/mexPipe

Что, безусловно, не может быть правильным, поскольку в служебном файле нет папки для mexконечная точка.

Вместо этого определите свой базовый адрес как:

<baseAddresses>
  <add baseAddress="net.pipe://192.168.0.100/ProductsService" />
</baseAddresses>

, а свою конечную точку как:

<endpoint address="mexPipe" contract="IMetadataExchange" ... />

, и вы обнаружите, что ваша конечная точка mex становится

net.pipe://192.168.0.100/ProductsService/mexPipe

Что выглядит правильно.

...