覆盖WS-Adressing-Header(to和Action)

时间:2016-08-16 07:12:13

标签: c# web-services wcf soap wsdl

我必须使用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: 指向端点
  • a:操作 为空

a:To 指向我在代码段中设置的端点。但服务器期望在WSDL中定义端点( WS:\\ uri)。我怎么能告诉WCF使用 WS:\\ -Link?或者我可以手动覆盖它吗?

我可以通过手动添加Reference.cs中的路径来解决 a:Action 的问题,对于我喜欢使用的每个函数,但为什么它是不是自我生成的?

0 个答案:

没有答案