完全和部分绑定的句柄

使用动态终结点时,运行时库会根据需要获取终结点信息。 运行时库区分 完全绑定的句柄 (包含终结点信息) 和 部分绑定的句柄 (不包含终结点信息) 。

客户端运行时库必须先将部分绑定的句柄转换为完全绑定的句柄,然后客户端才能绑定到服务器。 客户端运行时库尝试通过获取终结点信息来转换客户端应用程序的部分绑定句柄,如下所示:

  • 从客户端的接口规范
  • 从服务器上运行的终结点映射服务

如果客户端尝试在接口规范中不可用终结点信息且服务器的终结点映射器没有有关服务器终结点的信息时使用部分绑定句柄,则客户端将没有足够的信息进行远程过程调用,并且该调用将失败。 若要防止这种情况,当分布式应用程序使用部分绑定句柄时,必须在终结点映射器中注册终结点。 有关终结点映射程序的详细信息,请参阅 指定动态终结点

当远程过程调用失败时,客户端应用程序可以调用 RpcBindingReset 来删除过期的终结点信息。 当客户端尝试调用远程过程时,客户端运行时库会再次尝试将完全绑定的句柄转换为部分绑定的句柄。 当服务器已停止并使用不同的动态终结点重新启动时,这非常有用。