0

我遇到了 WCF 报告的问题...

net.pipe://192.168.0.100/SystemA/Service1.svc/mexPipe' 无法激活。

我已将我的基址定义如下:

服务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” - 或者这不起作用?

4

1 回答 1

1

您的基址不应包含服务文件名。您将在端点声明中指定。

如您所见,您的要点是:

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

这看起来是对的。

于 2011-06-03T13:33:18.027 回答