自定义wsdl基于条件?

时间:2013-11-12 20:24:11

标签: .net web-services soap

我想基于条件生成不同的WSDL我的意思是隐藏一些方法保持所有复杂类型只显示或隐藏一些方法。

我的问题

有什么办法可以在URL上获取一些参数来获取wsdl,然后在param中评估一个自定义WSDL渲染?

示例host.dev/myservice.wsdl?param=role1并使用反射删除一些属性,这些方法隐藏在执行时间。

问题所在 我有许多客户端到我的服务,他们用来获取wsdl以使客户端不被消费,他们只是让wsdl指向源而不是所有的方法都需要所有方法只是为了给他们一个干净的解决方案。

提前感谢。

2 个答案:

答案 0 :(得分:2)

不,我认为没有办法做到这一点。在你不使用的WSDL中拥有东西通常没什么坏处,为什么你需要这个呢?如果你这样做,将它分成其他服务可能是有意义的,因此你有单独的WSDL。如果您的客户端需要所有WSDL,他们可以全部引用它们。

答案 1 :(得分:1)

是的,这是可能的。实际上.net的WSDL生成器通过处理类型的方法来工作。我曾经写过一个Web服务包装器的对象,它将任何对象发布为一个完整的Web服务(Dynamic Web Services是该功能的名称)。由于代码属于我以前的雇主,我不能在这里显示代码示例,但我可以从我的记忆中给你一些指示。

  1. WSDL生成器实际上是一个可以通过传递类型来调用的类。
  2. 由于Type类本身未密封,您可以继承它。您的自定义Type类提供WSDL生成器的名称和参数。
  3. 在那之后,您需要提供哪些方法取决于您的想象力。我实际上实现了更多,我写了另一段代码,通过将字典键作为属性名称暴露创建类型,将字典对象转换为Web服务数据协定。正如我之前所说,这完全取决于你的想象力。