2013-01-07 48 views
1

对于wcf来说是新的,我经常坚持在配置文件中写入端点地址。有时我只是不明白我应该在服务运行的主机端的端点写什么地址。这里有一个示例端点条目....请看看。关于WCF端点地址属性

<endpoint address="net.tcp://localhost/ServiceModelSamples/Service1.svc" 
      binding="netTcpBinding" 
      contract="ServiceReference1.IService1"> 
</endpoint> 

<endpoint address="net.tcp://localhost/ServiceModelSamples/service" 
      binding="netTcpBinding" 
      contract="ServiceReference1.IService1" /> 

我有几个问题对端点地址 1)当我应该写端点地址这样的方式

net.tcp://localhost/ServiceModelSamples/Service1.svc 

我想,当我们将举办我们的IIS服务的话,我们需要写端点地址像上面那样我们需要写我们的svc文件名。 对不对?

2)只看到下面的地址

address="net.tcp://localhost/ServiceModelSamples/Service1.svc" 

是什么ServiceModelSamples我需要提到它?

3)假设我发展与WCF服务应用程序模板WCF服务和托管在Win形式的应用程序,服务,然后我们的端点地址会是什么样子下面一个

address="net.tcp://localhost/ServiceModelSamples/service" 

我是否需要写ServiceModelSamples我们项目名称的文件夹,或者我们可以从 地址一样address="net.tcp://localhost/service"

删除它,它是非常重要的,我知道,我需要写我们的项目文件夹名称,比如 )ServiceModelSamples

4)当我们在胜利形式的应用程序主机wcf服务,然后我需要指定我们的扩展名的svc文件名。 5)专门指导我什么地址,我们需要写在我们的服务在胜利形式的应用程序。

我所有的上述问题可能听起来很愚蠢,但我对自己在 端点地址确实混乱。我没有办法在这里提出问题。所以请看看我的5点并指导我。感谢

回答

1

我觉得你的困惑来自于不同IIS托管和定制托管之间。

当您使用IIS托管的服务,服务的行为是这样的:

  • 一个基地址被分配给该服务将自动具体情况取决于服务托管在IIS。它使用相同的地址映射,网站使用
  • 需要具备的.svc文件通过IIS暴露的服务实例服务层。这些服务文件只是帮助在IIS上公开的映射文件。

所以填写的地址,从客户托管在IIS,你需要一个服务:

  • 找出已经由IIS指定的地址。
  • 用您希望指向的Service.svc文件名完成该地址。

但是使用自定义的托管(通过的ServiceHost)服务地址完全由服务配置文件goberned时:

  • 服务可以配置基本地址通过baseAddresses所有端点设置
  • 所有端点可以有一个完整的地址或相对地址。如果使用相对地址,则得到的端点地址将是baseAddress +端点相对地址。

当定制托管你有在服务地址完全控制,所以你不要有什么,你必须遵循IIS的约束。

+0

我的担心是如何确定我将写入配置文件中的tcp绑定或双重绑定等。关于基地址的时间。所以告诉我如何写绝对地址?我可以给任何或写任何地址到tcp或双端点地址属性,如net.tcp:// localhost/S1/s2/s3/s4等 – Thomas

+0

如果您是自定义托管,而不是在IIS中,您可以编写任何你想要的地址,对于每个端点,只要您记得将其设置在服务器和客户端中,并且地址有效(它们可以解析) –

+0

是否没有任何规则可以写入地址。所以我可以写地址如net.tcp:// localhost/S1/s2/s3/s4并且它能工作 – Thomas