WCF 服务协定中使用 soapAction=“” 执行多个操作?

Multiple Operations with soapAction="" in a WCF Service Contract?

提问人:John Saunders 提问时间:4/9/2010 更新时间:4/13/2010 访问量:4341

问:

我需要创建一个将被第三方“回叫”的服务。因此,我需要遵守他们的 WSDL。

他们的 WSDL 具有用 定义的所有操作,因此我的服务需要执行相同的操作。不幸的是,我收到错误:soapAction=""

操作 A 和 B 有 相同的动作 ()。每一次操作 必须具有唯一的操作值。

在 ASMX Web 服务中,有一种模式不会使用 soapAction,而是使用 request 元素的名称。有没有办法使用 WCF 不仅可以调度请求元素,还可以发出没有 soapAction 的 WSDL?

C# WCF WSDL

评论


答:

11赞 Nix 4/13/2010 #1

这在 asmx 中是可能的,但在 WCF 中找不到执行此操作的干净方法,因为它使用操作将消息调度到操作。

我认为您需要的技巧是将 soapAction 设置为“*”,然后编写一个自定义调度程序

这样做的一个潜在副作用是 WSDL 不好,如果你需要公开一个 WSDL,你将不得不生成/窃取它,然后使用 externalMetadataLocation 属性