为什么我们在使用netmessagebinding元素时需要操作契约的action =“*”属性

时间:2015-01-05 12:02:00

标签: wcf azureservicebus

我们向主题内容类型“字符串”发布消息,即关于主题的窗体服务器服务总线的代理消息对象,并使用WCF服务从主题/订阅中提取消息。我们在互联网上看到的所有示例都在operationcontract / servicemethod上使用了带有“”的Action属性,为什么我们需要在使用netmessagebinding时将其标记为操作“”?

1 个答案:

答案 0 :(得分:1)

当您拥有包含多个操作的服务协定时,SOAP操作头值用于标识通过输入消息调用的操作。在NetMessageBinding情况下,输入消息本身不是SOAP消息,因此不会有用于分派操作的SOAP操作值。

要解决这个问题,WCF允许您定义" catch-all"操作,通过用Action =" *"标记它们,这意味着任何未通过常规机制显式路由到某些操作的消息都将被分派到catch-all操作。

因此,从本质上讲,您在此处所做的是告诉WCF通过服务合同中的此操作处理所有传入的消息。