从客户端请求中删除 Action (mustUnderstand)
Posted
技术标签:
【中文标题】从客户端请求中删除 Action (mustUnderstand)【英文标题】:Remove Action (mustUnderstand) from client request 【发布时间】:2015-04-07 23:39:51 【问题描述】:我有一个不受我控制的远程端点,我没有 WSDL,但我有 SOAP 消息的样本。因为我真的不想玩剪刀和手工制作肥皂信封,所以我的想法是创建服务/数据合同,这些合同将(曾经在 WCF 客户端中使用)生成所需的 SOAP 请求并解析响应。我立即遇到了第一种方法的问题,因为每个信封似乎在标题中包含 Action 寻址:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">urn:IService1/Auth</Action>
</s:Header>
<s:Body>
<Auth>
<login xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Password i:nil="true" />
<userName i:nil="true" />
</login>
</Auth>
</s:Body>
</s:Envelope>
这弄乱了强烈反对我的消息的被调用者。我尝试了不同的配置方法(我使用 web.config 来配置模拟服务和客户端),但似乎没有什么可以删除这个烦人的 Action 节点。在不做我不想做的事情的情况下解决这个问题的任何方法(手动玩 XML)
【问题讨论】:
【参考方案1】:我的问题解决了我的移动 XML 序列化格式,如Force parameter as Service contract attribute 中所述。当我切换到 XML 格式化程序时,Action 标头停止生成。但是,如果有人知道如何在 DataContract 类中删除它,请随意展示,我相信它会很有用。
【讨论】:
以上是关于从客户端请求中删除 Action (mustUnderstand)的主要内容,如果未能解决你的问题,请参考以下文章