Как отслеживать обратные вызовы, когда несколько клиентов подключены к службе WCF? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть служба wcf, размещенная службой Windows (соединение именованного канала с другим приложением в Windows), настроенная на

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession)]

При каждом подключении клиента у меня есть конструктор, который получает идентификатор Windows вызывающего абонентаи затем получает обратный вызов.

Теперь в другом файле в службе Windows хостинга я перебираю всех пользователей на машине с Windows и хочу иметь возможность доступа к обратному вызову для этого конкретного пользователя.

Допустим, что пользователь A и пользователь B подключились к моей службе WCF, теперь в моем цикле for. Сначала я хочу отправить некоторые данные, которые я обработал в цикле, пользователю A, а затем в следующем цикле отправить данные пользователю B (другие данные, чем данныеотправлено пользователю A).

Как сохранить, отследить или сослаться на различные обратные вызовы?

ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession)]
    public class WCFService: IWCFService
    {
        private readonly IWCFServiceCallback callback;

        public WCFService()
        {
            var primaryIdentity = OperationContext.Current.ServiceSecurityContext.PrimaryIdentity;

            var windowsIdentity = OperationContext.Current.ServiceSecurityContext.WindowsIdentity;

            this.callback = OperationContext.Current.GetCallbackChannel<IStatusServiceCallback>();          
        }
...