2

好吧,我想根据条件生成不同的 WSDL,我的意思是隐藏某些方法,保留所有复杂类型,只显示或隐藏某些方法。

我的问题

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

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

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

提前致谢。

4

2 回答 2

2

No, I don't think there is a way to do that. It doesn't usually hurt to have things in the WSDL you don't use, why do you need this at all? If you do, it'd probably make sense to split it into other services so you have separate WSDLs. If your client needs all of the WSDLs, they can reference them all.

于 2013-11-15T12:51:50.827 回答
1

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

  1. WSDL 生成器实际上是一个可以通过传递类型来调用的类。
  2. 由于Type类本身不是密封的,因此您可以继承它。您的自定义Type类为 WSDL 生成器提供名称和参数。

在那之后,您将提供哪些方法取决于您的想象。我实际上实现了更多,我编写了另一段代码,通过将字典键公开为属性名称来动态创建类型,将类字典对象转换为 Web 服务数据协定。正如我之前所说,这完全取决于您的想象。

于 2013-11-20T15:57:51.070 回答