2010-12-06 28 views

Répondre

2

Cela fonctionne:

var header = MessageHeader.CreateHeader("something", "", "blah"); 

using (new OperationContextScope(channel)) 
{ 
    OperationContext.Current.OutgoingMessageHeaders.Add(header); 

    //your normal call here 
} 
+1

Est-il possible d'attribuer ces préalablement au client ou ChannelFactory sans avoir à être dans le cadre de l'opération en cours? – kappasims

4

Une alternative qui ne nécessite pas la création d'une nouvelle OperationContextScope et la mise en l'en-tête chaque fois que vous utilisez le client est de spécifier les en-têtes lors de la création du EndpointAddress.

Exemple (adapté de https://stackoverflow.com/a/5340009/35233)

var binding = new WSHttpBinding(); 
var address = new EndpointAddress (
    new Uri (RemoteAddress), 
    new AddressHeader[] { 
     AddressHeader.CreateAddressHeader ("APIKey", "", "bda11d91-7ade-4da1-855d-24adfe39d174") 
    }); 

var client = new ExampleClient (binding, address);