【问题标题】:Webservice expose a complex type to the client in wsdlWebservice 在 wsdl 中向客户端公开一个复杂类型
【发布时间】:2011-06-16 15:49:40
【问题描述】:

我有(为了方便起见)2 节课 1)抽象类A 2) 从 A 继承类 B。

现在我正在使用方法“callMethod(A argument)” 这在 wsdl 中暴露了我的抽象类。

但问题是在客户端我希望能够知道 A 是 B 还是其他东西。而且我希望能够到达不可用的 B 类,因为它不在 wsdl 中。

我已经尝试过 KnownTypeAttribute 和 ServiceKnownTypeAttribute,但我无法让它工作。

现在我当然可以创建一个使用 B 类型参数的虚拟方法,从而导致 B 类在 WSDL 中公开,但这是不专业的。

有什么想法吗? 非常感谢

【问题讨论】:

  • 应作者要求删除。

标签: c# web-services wsdl class-attributes


【解决方案1】:

我也遇到过同样的问题,我发现的唯一一件事就是有一个暴露类型的方法(尽管从长远来看我需要一个)。

问题在于 wsdl 必须包含类型以便 B 的属性在客户端是已知的,否则您将永远无法使用 B 客户端。 B 的 wsdl 将包括它继承 A 的事实。

换句话说,在客户端,您的对象确实是 A - 因为只有公共属性被序列化,如果 web 方法通过 A,A 或 B 之间没有区别。

【讨论】:

  • 感谢您的回复,关于客户端的“我的对象真的是 A”,不准确,因为我的“B”有 A 没有的公共方法。
  • 只有当 B 类的完整类型 def 在客户端可用时才会出现这种情况(是这种情况吗?)。如果它从 WSDL 传递,则不描述方法,仅描述公共属性。
  • B 在客户端根本不可用。这就是我想做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多