Wie Benachrichtigen der host von einem WCF-Dienst, wenn ein client sich verbindet?
Habe ich einen WCF-Dienst gehostet wird, die von einem windows service. Ich kann nicht herausfinden, wie informieren Sie den windows-Dienst, wenn ein client eine Verbindung mit dem WCF-Dienst. Im Grunde habe ich alle in den windows-Dienst zum starten der WCF-Dienst ist:
private ServiceHost sHost;
WCF.WCFService wcfService = new WCF.WCFService();
sHost = new ServiceHost(wcfService);
sHost.Open();
Ich bin in der Lage, um Methoden aufzurufen, die in der WCF-Dienst mit den windows-Dienst mithilfe der wcfService Objekt. Gibt es eine Möglichkeit, irgendeine Art von event ausgelöst, wenn ein client eine Verbindung zum WCF-Dienst?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem der Dienst ausgeführt wird, als ein Objekt, das instanziiert wird, nach der
ServiceBehaviourAttribute
EigenschaftInstanceContextMode
Die Werte für InstanceContextMode sind
Single
- eine einzelne Instanz der Dienst ausgeführt wird, für alle Sitzungen und AnrufePerSession
- eine Instanz der Dienst ausgeführt wird, für jede Sitzung (d.h. jeder client)PerCall
- eine Instanz der service instanziiert wird für jeden Anruf, auch aus einem einzelnen clientDen default-Wert ist
PerSession
, und dies macht Sinn, für die meisten Szenarien. Angenommen, Sie sind mitPerSession
können Sie setzen, was Sie 'connect-Logik" wie Sie innerhalb der Konstruktor für den service.Müssen Sie vorsichtig sein, ausführen von code in den Konstruktor, da der Dienst nicht verfügbar sein, bis der Konstruktor abgeschlossen ist. Wenn Sie wollen, etwas zu tun, das kann einige Zeit dauern, ein Ereignis auslösen oder senden einen thread zur Ausführung der arbeiten.
Fand ich die beste Antwort hier: Abonnieren Sie Ereignisse innerhalb eines WCF-Diensts
Als vermutet, können Sie einen Ereignis-handler in den WCF-Dienst, die abgeholt werden können durch den host.