Почему служба WCF с именованным каналом отклоняет клиентов службы Windows? - PullRequest
5 голосов
/ 19 июля 2010

В Windows 7 и .NET 4 я получаю очень странные эффекты от именованного конвейерного транспорта WCF, когда мой клиент WCF является службой Windows.

Моя служба WCF размещается в приложении пользовательского режима и отображается поверх привязки именованного канала.

Мой клиент WCF - это служба Windows, работающая как сетевая служба (я получаю тот же результат, если он работает как локальная система).

Если мое приложение пользовательского режима (то есть служба WCF) работает как администратор домена, то оно работает нормально, но если приложение пользовательского режима является обычным пользователем (или локальным администратором), то соединение отклоняется с исключением CommunicationObjectFaptedException.

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

1 Ответ

4 голосов
/ 19 июля 2010

Из записи в блоге Кристиана Вейера Работа с «проблемами» привилегий ОС в сценариях именованных каналов WCF :

Если мой сервер WCF обрабатывает с использованием именованныхКонечная точка, основанная на канале, не имеет привилегий для создания объекта глобального ядра, она молча завершается сбоем и создает локальную, которая не будет видна процессам за пределами ее сеанса.

Таким образом, нет связи на основе именованного каналаМеханизм (WCF или иным образом), открытый процессом без привилегии для создания глобального объекта ядра, сможет когда-либо получать сообщения извне своего собственного сеанса.

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

Проблема в том, что это не очень необычный сценарий для службы .NET, с которой нужно общаться..NET-приложение в трее для предоставления пользовательских уведомлений.Механизм опроса от приложения в трее до сервида будет работать ... но опрос медленный и ресурсоемкий, и я бы хотел его избежать.

Кто-нибудь знает о лучшем настраиваемом транспортном средстве IPC?

Тим

...