Domanda

Ho un servizio WCF self-hosted con l'InstanceContextMode impostato PerSession.
Come faccio a rilevare le nuove connessioni client (sessioni) per il mio servizio dall'applicazione host e utilizzare questo nuovo contesto di sessione per osservare il mio servizio attraverso le sue manifestazioni?

Qualcosa di simile:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class MyService : IMyService {
    public event EventHandler ClientRegistered;
    public event EventHandler FileUploaded;
}

e dalla mia applicazione host per essere in grado di fare:

ServiceHost svc = new ServiceHost(typeof(MyService));
svc.Open();

// something like:
svc.NewSession += new EventHandler(...)

//...

public void SessionHandler(InstanceContext SessionContext) {
    MySessionHandler NewSessionHandler = new MySessionHandler(SessionContext);

    // From MySessionHandler I handle the service's events (FileUploaded, ClientRegistered) 
    // for this session and notify the UI of any changes.
    NewSessionHandler.Handle();
}
È stato utile?

Soluzione

È possibile utilizzare IsInitiating nel contratto di servizio

[OperationContract(IsInitiating = true)]
   void FirstMethod();

Si veda il seguente link:

http: / /social.msdn.microsoft.com/Forums/en-US/wcf/thread/8137553a-8657-475e-b9ca-5914d9c9d57a

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top