【问题标题】:Can I find out what WCF methods are supported on the endpoint before calling it?我可以在调用端点之前找出端点支持哪些 WCF 方法吗?
【发布时间】:2011-02-21 03:25:57
【问题描述】:

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

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

我试过了:

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

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

【问题讨论】:

    标签: c# wcf datacontract servicecontract


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢。不幸的是,我们在这里处于一种相反的情况。客户端被提供了接口,并被要求用服务来实现它。我们作为主机调用它们(这个端点),因此,我们没有能力为新方法实现版本控制,因为在这种情况下它们是服务器,而不是我们。另外,我认为我们一直在设置我们的服务来为 Mex 提供服务,只是为了通过 svcutil 生成初始代理。我们不会将 Mex 配置推送到生产环境。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多