1

作为 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) 当我们在 win 表单应用程序中托管 wcf 服务时,我是否需要指定我们的 svc 文件名和扩展名。

5)具体指导我在win表单应用程序中托管服务时需要写什么地址。

我上述所有问题可能听起来很愚蠢,但我对端点地址感到非常困惑。我没有办法在这里提出问题。所以请看看我的5点并指导我。谢谢

4

1 回答 1

1

我认为您的困惑来自IIS Hosting 和 custom hosting之间的差异。

当您使用 IIS 托管服务时,服务的行为方式如下:

  • 根据服务在 IIS 中托管的位置,会自动为服务分配一个基地址。它使用与网站相同的地址映射
  • 服务层需要有 .svc 文件才能通过 IIS 公开服务实例。这些服务文件只是有助于在 IIS 上公开的映射文件。

因此,要从客户端填写 IIS 中托管的服务的地址,您需要:

  • 找出 IIS 分配的地址。
  • 使用您要指向的 Service.svc 文件名填写该地址。

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

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

自定义托管时,您可以完全控制服务地址,因此您没有任何必须在 IIS 上遵循的限制。

于 2013-01-07T08:46:26.993 回答