2011-06-03 37 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 

哪看起來正確。