我遇到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 binding metadata problem
海报似乎与我有类似的配置,响应者声明基本地址在每个方案中并非“独特” - 但他们肯定都是因为它们都引用了两个独特的服务?
WCF可以检测到我的mex端点是netNamedPipe并查找它们的基地址吗?鉴于绑定是“mexNamedPipeBinding” - 或者这不起作用?
答案 0 :(得分: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
看起来是正确的。