Soap WCF中的自定义标头
我想在我的wsdl上为传入的soap消息添加特定的自定义头,因此我将所需的标记添加到web.config的头节点中,如下所示:Soap WCF中的自定义标头,soap,wcf,wcf-binding,Soap,Wcf,Wcf Binding,我想在我的wsdl上为传入的soap消息添加特定的自定义头,因此我将所需的标记添加到web.config的头节点中,如下所示: <headers> <Tag>Value</Tag> </headers> 价值 但是,如果自定义标记中的“Value”设置为“Value”,那么当我更改此值时,服务会将其踢出,并给出以下错误,则此操作可以正常工作 'DestinationUnreachable-由于EndpointDispatcher上的
<headers>
<Tag>Value</Tag>
</headers>
价值
但是,如果自定义标记中的“Value”设置为“Value”,那么当我更改此值时,服务会将其踢出,并给出以下错误,则此操作可以正常工作
'DestinationUnreachable-由于EndpointDispatcher上的AddressFilter不匹配,无法在接收方处理收件人为“”的消息。检查发送方和接收方的端点地址是否一致。”
那么,如何为标记之间的实际值指定变量值??就像在url模板中一样
<headers>
<Tag>{variable value here}</Tag>
</headers>
{此处的变量值}
有什么想法吗,还是我走错了方向?我不想使用messageContract,因为我们使用RPC样式的soap而不是文档样式
另一件奇怪的事情是,为了使消息有效,header元素中定义的自定义必须使用ws-addressing命名空间指定“IsReferenceParameter=“true”属性,否则会引发上述错误
<Tag a:IsReferenceParameter="true">Value</Tag>
值
谁能给我解释一下吗
提前谢谢
Jon我无法真正解释您的具体问题,但通常,您会在代码中向WCF调用添加自定义头,通常使用行为,而不是从web.config。真的,我不确定这是否有效 当然,您的自定义头行为可以做的是读取它将从配置文件、数据库表或其他文件发送的值 但是如果您真的想在消息中强制使用SOAP头,我认为您最好的选择是使用消息契约。为什么您不能或不想使用消息契约??这实际上是消息契约的唯一目的:定义显式SOAP消息布局,包括自定义头 请参阅有关此主题的一些文章和博客帖子:
Marc我希望在服务端需要一个自定义的头,并使用头标记在WSDL文档中显示标记。你知道为什么我不能在web.config中的自定义标记中使用变量值吗?JonAh好的,对不起,我没有理解“在WSDL中需要标头”部分。对不起,我不知道如何将变量名指定为占位符。恐怕我看到的在合同中描述SOAP头的唯一解决方案就是使用MessageContract。这正是它的目的。嗨,抱歉,我认为我没有很好地解释它,在自定义标记节点中,我不想指定变量,我希望内容是我希望的任何内容,而不仅仅是“值”。例如:somevalue另一个值当我尝试传递除“Value”以外的任何数据时,我在第一篇文章中定义了错误。您在web.config中的具体位置指定了这些标题?请在服务标记-Value中说明您从何处了解到这一点。我想你可能误解了你读到的东西。