【问题标题】:Multiple endpoints for single contract in WAS-hosted WCF service?WAS 托管的 WCF 服务中单个合同的多个端点?
【发布时间】:2010-06-23 18:43:48
【问题描述】:

如果需要为异构环境中的单个合同公开多个端点(例如,一个使用 basicHttpBinding,另一个使用 netTcpBinding),在 WAS 托管的服务上,如何做?

我读到的关于端点的 WAS 配置的所有内容都表明端点地址和主机基地址应该留空,因为 WAS 应该通过 .svc 文件的路径和协议自动解析地址。

但是,如果不说明地址,似乎不可能为同一个合约定义一个 HTTP 端点和一个 TCP 端点。到目前为止,我的每一次尝试都让我梦寐以求的“绑定实例已经与监听 uri 相关联”错误。

想法?

谢谢

【问题讨论】:

  • 如果您为每个端点指定不同的基本 URL,则不应显示该错误。你可以在这里发布你的配置文件代码吗?
  • @decyclone:根据我在 MSDN 上阅读的内容,不应该使用 WAS 指定基地址。 WAS 应该通过协议和 .svc 文件的路径来解析地址。由于两个端点使用不同的协议,因此每个端点都应该唯一解析。谢谢

标签: wcf was endpoints


【解决方案1】:

看看这是否适合你 http://knowledgebaseworld.blogspot.com/2010/06/domain-name-replaced-with-machine-name.html 我遇到了同样的问题“绑定实例已经与监听 uri 相关联”,通过添加 httpGetUrl 和绑定地址来解决这个问题

【讨论】:

    【解决方案2】:

    据我了解,*.svc 文件仅适用于 HTTP 协议,例如您可以将它用于您的basicHttpBinding 连接。在这种情况下,您是绝对正确的 - 服务的基地址和端点的地址属性被忽略 - 服务 URI 由服务器名称、可选端口、SVC 文件所在的虚拟目录以及名称和扩展名定义SVC 文件本身。

    只要您不需要多个不同的类似 HTTP 的协议和端点,一个 SVC 文件就应该负责 HTTP 流量。

    但是,这些选项不适用于非 http 协议,例如 netTcpBinding。在这种情况下,您需要在 web.config 中定义一个端点地址(可能作为适当基地址的相对路径)。

    【讨论】:

    • 感谢您的回复。如果我没有指定主机基地址,并在 WAS 配置文件中将 netTcpBinding 端点的端点地址配置为仅“/tcp”,并向 net.tcp://localhost/MyService/Service.svc/tcp 发送请求,请求似乎被正确路由。此外,如果我从该配置生成代理,则客户端地址生成为 net.tcp://localhost/MyService/Service.svc/tcp(与以前相同的地址)。这两个因素似乎暗示 WAS 使用协议和 SVC 文件的路径来解析基地址以进行 TCP 绑定。
    • @User364825:据我了解,您需要在端点中有一个完整地址,或者如果您想使用像“/tcp”这样的相对地址,您必须有一个基地址
    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多