Внутренняя связь между службой и многопользовательскими приложениями WCF C # - PullRequest
4 голосов
/ 08 сентября 2011

В настоящее время я работаю над проектом на c #, в котором у меня есть служба, работающая в качестве LocalSystem, и пользовательское приложение (приложение трей), работающее для каждого вошедшего в систему пользователя.два.Изначально я настроил конечную точку, используя NetTcpBinding для службы, чтобы клиенты могли подключаться и указывать свое имя пользователя.После этого каждый клиент сам устанавливает конечную точку как таковую;net.tcp: // localhost: 5001 / UserApp / 'username' с включенным общим доступом к портам.Затем служба может подключиться к этой конечной точке, зная имя пользователя.

Хотя, пытаясь заставить программу нормально работать с UAC, я столкнулся с некоторыми проблемами.Совместное использование порта с включенным контролем учетных записей требует, чтобы пользователь был зарегистрирован в <'allowAccounts> SMSvcHost.exe.config, и хотя я добавил пользователя, я все еще получаю следующее сообщение об ошибке при попытке зарегистрировать конечную точку:

Конечной точке службы не удалось прослушать URI «net.tcp: // localhost: 5001 / UserApp / myuser», поскольку в доступе было отказано.Убедитесь, что текущему пользователю предоставлен доступ в соответствующем разделе allowAccounts SMSvcHost.exe.config.

Я также попытался переключиться на NetNamedPipeBinding, который хорошо работает при размещении пользовательского приложения.Но при использовании этой привязки служба не может получить доступ к конечным точкам, открытым клиентами.

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

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

в этом случае я бы подумал об использовании каналов обратного вызова вместо открытия новых сервисов на клиенте (хорошо - это почти то же самое, но оно вписывается в рамки и настройки WCF).Вы можете прочитать об этом здесь: Что нужно знать об односторонних вызовах, обратных вызовах и событиях

0 голосов
/ 08 сентября 2011

Вы также можете посмотреть дуплексные службы, в частности, wsDualHttpBinding.Он предназначен только для того, чтобы вы просили ... чтобы служба и клиент могли отправлять сообщения независимо друг от друга.

http://msdn.microsoft.com/en-us/library/ms731064.aspx

...