我正在构建一个WCF SOAP应用程序。 WSDL文件有许多操作,其中许多操作具有相同的参数类型。 WSDL文件将所有soapAction属性定义为“''”。当我尝试启动这样的服务时,WCF会抛出一个异常,说soapActions必须是唯一的。
经过一些谷歌搜索后,我比以前更加困惑。我使用SOAPUI创建了一个带有两个操作的模拟服务,这两个操作采用相同的输入类型,并且没有定义soapActions,它总是选择相同的操作。定义操作后,它可以正常工作。
我的问题是:
编辑: 我无法控制WSDL。我正在使用WSCF.Blue工具从WSDL文件创建服务存根。我可能能够修改WSDL,但我想看看是否有可能保留它。
答案 0 :(得分:2)
从你的问题不是很清楚,但我建议你基于一些定义的WSDL构建服务,不是吗?默认情况下,WCF使用SOAP操作,因为它是WCF服务使用BasicHttpBinding提供的WS-I Basic Profile 1.1的一部分。当动作由root body元素定义时,将使用具有空SOAP动作的WSDL。
WCF示例提供了custom DispatchOperationSelector的示例,它能够通过其根体元素将消息路由到操作。这可能是您需要添加到服务中的内容,以便基于提供的WSDL的客户端可以调用它。