Установить учетные данные для нового канала без создания новой фабрики - PullRequest
0 голосов
/ 13 апреля 2010

У меня есть бэкэнд-сервис и интерфейсные сервисы. Они общаются через шаблон доверенной подсистемы. Я хочу перенести имя пользователя из внешнего интерфейса в бэкэнд и сделать это с помощью учетных данных, указанных здесь:

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

Это не работает в нашем scenerio, где внешний интерфейс создает фабрику каналов служебного канала через:

channelFactory = new ChannelFactory<IBackEndService>(.....);

Создание нового канала выполняется через фабрику каналов. Я могу установить учетные данные только один раз, после чего получаю исключение, что объект имени пользователя доступен только для чтения.

channelFactory.Credentials.Username.Username = "myCoolFrontendUser";
var channel = channelFactory.CreateChannel();

Есть ли способ создать фабрику каналов только один раз, так как это дорого создать, а затем указать учетные данные имени пользователя при создании канала?

1 Ответ

0 голосов
/ 24 июня 2010

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

...