我必须使用WS-Adressing访问SOAP服务。我只是导入了我得到的WSDL,我尝试连接。但是服务对生成的WS-Adressing Headers不满意。
我的代码如下所示:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1"/>
<a:MessageID>urn:uuid:8123d133-c107-44cf-97be-762014fa1b83</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">https://endpoint123/services</a:To>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<TestFunction xmlns = "http://xmldefs...../" />
</ s:Body>
</s:Envelope>
这会生成一个像这样的请求:
{{1}}
服务器对此请求有两个问题:
a:To 指向我在代码段中设置的端点。但服务器期望在WSDL中定义端点( WS:\\ uri)。我怎么能告诉WCF使用 WS:\\ -Link?或者我可以手动覆盖它吗?
我可以通过手动添加Reference.cs中的路径来解决 a:Action 的问题,对于我喜欢使用的每个函数,但为什么它是不是自我生成的?