Ich habe einen Wrapper für einen WCF-Dienst mit einer Reihe von Methoden. Bei jeder Methode bin ich eine sessionId
und eine deviceId
zur Authentifizierung einfügen. Diese Werte ändern sich bei der Instanziierung und Sie sollten sie nach dem Beenden wieder löschen.So ändern Sie SOAP-Header bei jedem Methodenaufruf
Ich bin mir bewusst, dass Sie dies tun können, die Header eines Anrufs zu ändern:
using (var scope = new OperationContextScope((IClientChannel)this.client.InnerChannel))
{
WebOperationContext.Current.OutgoingRequest.Headers.Add("SessionId", this.sessionId);
WebOperationContext.Current.OutgoingRequest.Headers.Add("DeviceKey", this.deviceKey.ToString());
return this.client.MyMethod("call");
}
Ich will nicht diese 20-mal einzufügen. Gibt es eine Möglichkeit, dies sauber zu machen? Ich kann wahrscheinlich Reflection
verwenden und aufrufen. Aber meine Methoden haben keine einheitlichen Werte und Argumente.
public class Service {
private string sessionId; //needed for auth
private string deviceId; // needed for auth
public Service (string userName, string password) {}
public string[] GetList() {}
public Foo[] GetSomethingElse(Bar arg) {}
public List<Baz> GetTheThing(Fez org) {}
// etc... x 20
}
ein smidge datiert registrieren Dies ist, aber es könnte Ihnen einige Ideen: https://blogs.msdn.microsoft.com/carlosfigueira/ 2011/03/14/wcf-erweiterbarkeit / –