2011-06-03 36 views
0

我有哪里WCF是报告的一个问题...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> 

对于每个服务然后我定义墨西哥端点如下...

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

这当然应该给我2倍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” - 或没有这项工作?

回答

1

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

正如你所看到的,你enpoints是:

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 

哪看起来正确。