Posts

Showing posts with the label SOAPHEADER

How to add soap header to WCF service call. Part 2

If you want to add to every wcf call a soap header and don't want to wrap them - you can easily implement method ApplyClientBehavior of an interface IOperationBehavior , and in this method attach your own message wrapper: clientOperation.Formatter = new MessageWrapper(clientOperation.Formatter); MessageWrapper should implement an interface IClientMessageFormatter . To add your header you have to add next code to SerializeRequest method: public Message SerializeRequest(MessageVersion messageVersion, object[] parameters) {     Message res = curFormatter.SerializeRequest(messageVersion, parameters);     if (SPContext.Current == null)     {         res.Headers.Add(MessageHeader.CreateHeader("MyTestHeader", "Test Value"));     } } Your Operation Behavior can be attached on initializing stage of your service proxy: foreach (OperationDescription operation ...

How to add soap header to WCF service call. Part 1

Yeah, I've tried different solutions, spent a lot of hours and nerves. Interesting situation, when became deadline to workaround this problem - the key have been found quickly. The trick is to wrap service call with OperationContextScope and add to current operation context outgoing message a header- and that's it :). using (TestServiceClient testClient = new TestServiceClient()) {     using (OperationContextScope scope = new OperationContextScope(testClient.InnerChannel))     {         MessageHeader header = MessageHeader.CreateHeader("MyTestHeader", "", "Test Value");         OperationContext.Current.OutgoingMessageHeaders.Add(header);         testClient.DoTestCall();     } }