2010-11-25 206 views
1

在上述方案中,4個項目:業務時,WCFService和WCFServiceHost(窗口服務)和客戶端發現WCF託管的Windows服務

當我在解決方案的工作,沒問題,我可以發現和創造客戶端中的代理。

當我安裝主機服務,從我做起,但不可能發現和創造這從Visual Studio代理:的net.tcp://本地主機:9100/MyApplicationWcf

任何想法?

謝謝,使用mexTcpBinding

更新#1

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
    <services> 
     <service name="MyApplicationWcf.MyClassWcf"> 
     <endpoint address="net.tcp://localhost:9100/MyClassWcf" 
        binding="netTcpBinding" 
        bindingConfiguration="" 
        name="MyClassWcf_Tcp" 
        contract="MyApplicationWcf.MyClassWcf" /> 

     <endpoint name="mexHttpBinding" 
        contract="IMetadataExchange" 
        binding="mexHttpBinding" 
        address="mex" /> 
     </service>  
    </services>  
    </system.serviceModel> 
</configuration> 
+1

你能顯示服務的配置文件嗎?你從哪裏嘗試去做? net.tcp:// localhost:9100/MyApplicationWcf將您連接到您嘗試訪問的計算機,因爲「localhost」。 – Kangkan 2010-11-25 08:33:47

+0

我會做,重新開始。空白的解決方案,當我嘗試「添加服務引用」anyhting在結果 – 2010-11-25 09:03:36

回答

2

如果你想發現過的net.tcp的服務,您需要定義一個MEX端點(元數據交換)。

<behaviors> 
    <serviceBehaviors> 
     <behavior name="MexBehavior" > 
     <serviceMetadata/>        
     </behavior> 
    </serviceBehaviors> 
</behaviors>  
<bindings> 
    <netTcpBinding> 
     <binding name="mexBinding" portSharingEnabled="true"> 
      <security mode="None"></security> 
     </binding> 
    </netTcpBinding>  
</bindings> 
<services> 
    <service name="YourServiceImpl" 
      behaviorConfiguration="MexBehavior">     
     <host> 
     <baseAddresses> 
      <add baseAddress ="net.tcp://localhost:9100/MyApplicationWcf/"/> 
     </baseAddresses> 
     </host> 
     <endpoint address="" 
       binding="netTcpBinding" 
       contract="IYourServiceContract" /> 
     <endpoint address="mex" 
       binding="mexTcpBinding" bindingConfiguration="mexBinding" 
       contract="IMetadataExchange" /> 
    </service> 
</services> 

你有嗎?

查看:How to: Publish Metadata for a Service Using a Configuration File瞭解更多信息。

相關問題