0

我有一个 WCF 服务合同的版本控制问题,其中为操作调用的众多端点之一缺少合同中的一种方法。

我的问题是,在尝试调用该命令之前,如何确保该命令在客户端可用?

我试过了:

  foreach (var od in proxy.Endpoint.Contract.Operations)
  {
    if (od.Name == "MyMethodName")
    {
      hasMethod = true;
      break;
    }
  }

不幸的是,这是使用调用应用程序的合同,实际上并没有描述端点本身的实现。结果,即使端点未能执行命令,它也会返回 true。

4

1 回答 1

2

在您尝试之前,您永远不会真正知道。您所拥有的是已实施合同的代理,但自从您创建/生成它以来,服务器端的内容可能已经改变。

假设它是一个 http/httpws 实现,我想您可以调用并检查服务引用并下载 wsdl 文件。这将告诉您支持哪些方法等。您将遇到的问题是,即使方法的名称可能相同,您还必须检查返回类型和参数以真正确保它是相同的方法并且您可以使用您当前拥有的代理。

这是关于 WCF 中版本控制的链接:http:
//msdn.microsoft.com/en-us/library/ms731060.aspx

这是关于 WCF 版本控制最佳实践的链接:
Best practice for versioning your services with WCF?

于 2010-05-18T22:48:15.480 回答