WCF - 关于地址(ABC)的初学者问题

时间:2010-04-23 08:01:01

标签: wcf

我是WCF的新手。以下是关于WCF的问题。

假设我的服务定义如下。

主持人有两个地址。我经常点击基地址http:// ....来生成代理。

  1. 生成代理时,是否只有http的地址?
  2. 如何使用net.tcp生成代理。
  3. 是否有任何文章解释了net.tcp与本地主机和ASP.NET的使用?
  4. 这是我的配置:

    <service name="XXX.RRR.Common.ServiceLayer.MySL" behaviorConfiguration="returnFaults">
      <endpoint
          behaviorConfiguration="LargeEndpointBehavior"
          binding="netTcpBinding" bindingConfiguration="MessagingBinding" 
          contract="XXX.RRR.Common.ServiceLayer.IMySL" />
      <host>
        <baseAddresses>
           <add baseAddress="net.tcp://localhost:86/XXX/RRR/ManagerService" />
           <add baseAddress="http://localhost:76/XXX/RRR/ManagerService" /> 
        </baseAddresses>
      </host>
    </service>
    

    由于 Lijo

1 个答案:

答案 0 :(得分:0)

你的问题到底是什么?从您的配置中,我发现您没有在服务端点上定义任何地址 - 您需要提供一个!

<service name="XXX.RRR.Common.ServiceLayer.MySL" behaviorConfiguration="returnFaults">
  <endpoint
      address=""
      behaviorConfiguration="LargeEndpointBehavior"
      binding="netTcpBinding" bindingConfiguration="MessagingBinding" 
      contract="XXX.RRR.Common.ServiceLayer.IMySL" />

当您使用http地址创建针对此服务的客户端代理时,则是,客户端配置将具有http端点作为其地址 - 类似于:

<client>
  <endpoint name="Default"
            address="http://localhost:76/XXX/RRR/ManagerService"
            binding="basicHttpBinding" 
            contract="XXX.RRR.Common.ServiceLayer.IMySL" />
</client>

您只需手动将第二个端点添加到配置中 - 或者使用Visual Studio中的Wcf Configuration Tool来执行此操作! - 像这样:

<client>
  <endpoint name="Default"
            address="http://localhost:76/XXX/RRR/ManagerService"
            binding="basicHttpBinding" 
            contract="XXX.RRR.Common.ServiceLayer.IMySL" />
  <endpoint name="TCP"
            address="net.tcp://localhost:86/XXX/RRR/ManagerService"
            binding="netTcpBinding" 
            contract="XXX.RRR.Common.ServiceLayer.IMySL" />
</client>

但是,使用服务端的当前配置,您只在服务器上公开一个netTcp端点 - 因此您甚至无法使用HTTP连接到服务器来创建客户端代理... ..