如何将原始XML作为SOAP头传递给WCF代理类?
问题描述:
我需要将以下SOAP头传递给WCF服务调用。如何将原始XML作为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对象来做到这一点。
例如:calling WCF services using SOAP
然而,在我来说,我已经从WSDL生成的服务代理类。代理类已经创建了服务调用签名:
myResponseObject = ServiceProxy.MyServiceMethod(myRequestObject1, myRequestObject2);
如何在服务调用中“注入”我的soap头文件?
答
要创建或更改WCF服务的SOAP,您需要使用MessageContract,因为DataContract不能很好地控制SOAP消息。 有了这个,你可以通过传递所需的请求和response.Refer下面的链接
http://csharp-video-tutorials.blogspot.in/2013/11/part-10-message-contract-in-wcf_28.html
改变SOAP头部,身体