我有一个不受我控制的远程端点,我没有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)
答案 0 :(得分:1)
我的问题解决了我移动的XML序列化格式,如Force parameter as Service contract attribute中所述。当我切换到XML格式化程序时,Action标头停止生成。但是,如果有人知道如何在DataContract类中删除它,请随意显示,我相信它会有用。