gpt4 book ai didi

wcf - 更改命名空间前缀 WCF 信封

转载 作者:行者123 更新时间:2023-12-01 04:10:23 28 4
gpt4 key购买 nike

我想知道无论如何要更改 WCF SOAP 请求的命名空间前缀?

正如您在下面的示例中看到的,信封的 namespace “http://www.w3.org/2005/08/addressing”带有前缀“a”。我想把它改成'foo'。我怎样才能做到这一点。
注意我无法控制服务代码我只能从 WSDL 创建代理类。

 <s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<a:Action s:mustUnderstand="1">http://www.starstandards.org/webservices/2005/10/transport/operations/MyAction</a:Action>
<h:payloadManifest xmlns="http://www.starstandards.org/webservices/2005/10/transport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:h="http://www.starstandards.org/webservices/2005/10/transport">
<manifest contentID="Content0" namespaceURI="http://www.starstandard.org/STAR/5" element="TESTMETHOD" version="5.2.4"></manifest>
</h:payloadManifest>
<h:Identity xmlns="urn:xxx/xxx/" xmlns:h="urn:xxx/xxx">
<SiteCode>XXXXXX</SiteCode>
</h:Identity>
<a:To>urn:xxx/xxx/Method1</a:To>
<MessageID xmlns="http://www.w3.org/2005/08/addressing">XXXXX</MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
</s:Header>

最佳答案

这可以通过使用 MessageFormatter 在客户端或服务器端完成。您也可以使用 MessageEncoder 更改此设置,但这有很多问题。

本文介绍了如何使用 MessageFormatter 在服务器端执行此操作以及 MessageEncoder 的缺点:

http://vanacosmin.ro/Articles/Read/WCFEnvelopeNamespacePrefix

您需要做的是应用 MessageFormatter 客户端(可能使用 ApplyClientBehavior 而不是 ApplyDispatchBehavior)。此外,在自定义消息类中,您需要将命名空间添加为属性,并带有“foo”前缀(在 OnWriteStartEnvelope 方法中)。

不幸的是,没有简单的方法(例如应用某些属性)可以进行所需的更改。

关于wcf - 更改命名空间前缀 WCF 信封,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6506713/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com