如何将原始 XML 作为 SOAP 标头传递到 WCF 代理类



我需要将以下 SOAP 标头传递到 WCF 服务调用中。

<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
     <wsu:Timestamp wsu:Id="TS-3DCA13685AB558766615063665309446">
        <wsu:Created>2017-09-25T19:08:50.943Z</wsu:Created>
        <wsu:Expires>2017-09-25T20:48:50.943Z</wsu:Expires>
     </wsu:Timestamp>
     <wsse:UsernameToken wsu:Id="UsernameToken-3DCA13685AB558766615063665252595">
        <wsse:Username>prdIDXXXX</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">XXXXXX</wsse:Password>
        <wsu:Created>2017-09-25T19:08:45.259Z</wsu:Created>
     </wsse:UsernameToken>
  </wsse:Security>

问题是,stackoverflow或其他论坛中的大多数解决方案都是通过创建HttpWebRequest对象来实现的。

示例:使用 SOAP 调用 WCF 服务

但是,就我而言,我已经有一个从 WSDL 生成的服务代理类。代理类已创建调用签名的服务:

myResponseObject = ServiceProxy.MyServiceMethod(myRequestObject1, myRequestObject2);

如何在服务调用中"注入"我的 soap 标头?

若要创建或更改 WCF 服务的 SOAP,需要使用 MessageContract,因为 DataContract 对 SOAP 消息没有太多控制权。有了这个,您可以通过传递所需的请求和响应来更改 SOAP 标头、正文。请参阅以下链接

http://csharp-video-tutorials.blogspot.in/2013/11/part-10-message-contract-in-wcf_28.html

最新更新