WCF服务Wsdl错误:操作引用已导出的消息元素

时间:2011-03-17 14:00:27

标签: wcf wsdl messagecontract

我们有一个WCF服务,它有两个具有相同消息合同的操作(Operation1和Operation2)。当您访问Wsdl(Get / Http)时,我们收到此错误:


System.InvalidOperationException:在对WSDL导出扩展的调用中抛出异常:System.ServiceModel.Description.DataContractSerializerOperationBehavior

合同:Xxxxx ----> System.InvalidOperationException:Xxxx.IServiceInterface.Operation1操作 引用已从Xxxx.IServiceInterface.Operation2操作导出的消息元素[http://schemas.somecompany.com/namespace/version/:MessageContract]。

您可以通过更改方法名称或使用OperationContractAttribute的Name属性来更改其中一个操作的名称。或者,您可以使用MessageContract编程模型更详细地控制元素名称。


对我来说,应该可以重复使用相同的消息进行不同的服务操作。我理解错误中给出的解决方案,但我们希望为许多不同的操作提供相同的消息。

思想?

更多信息:我们实现了一个事件发布/子机制。事件订阅者使用他们想要处理的事件类型声明服务操作,并将其包装在通用消息协定类中。此通用消息类使用消息代码属性来使用事件发布者xml名称 - 这是一个单一的消息结构。所有事件订阅者都在UDDI中注册,pub / sub机制使用这些端点将事件推送到订阅者。在UDDI中注册服务操作会检测特定的事件命名空间,以将这些服务操作注册为事件处理程序(而不是请求/响应操作)。

1 个答案:

答案 0 :(得分:0)

如果您具有复制粘贴的operation1,然后将名称更改为operation2,但未更改DataContract属性以匹配新名称,则会发生此错误。