在调用端点之前,我可以找出端点支持哪些WCF方法吗?

时间:2010-05-18 22:35:34

标签: c# wcf datacontract servicecontract

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

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

我试过了:

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

不幸的是,这是使用来自调用应用程序的合同,并没有实际描述端点本身的实现。因此,即使端点未能实现该命令,它也会返回true。

1 个答案:

答案 0 :(得分:2)

直到你尝试它才会真正知道。你所拥有的是已实施合同的代理,但是自从你创建/生成它以来,服务器端的内容可能已经发生了变化。

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

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

以下是WCF版本控制最佳做法的链接:
Best practices for versioning your services with WCF?