在不创建新工厂的情况下为新通道设置用户名凭据

时间:2010-04-13 16:41:48

标签: wcf wcf-security performance

我有后端服务和前端服务。它们通过可信子系统模式进行通信。我想将用户名从前端转移到后端,并通过此处的用户名凭据执行此操作:

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

这在前端通过以下方式构建后端服务频道工厂的场景中不起作用:

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

通过模具通道工厂创建新通道。我只能设置凭证一次,因为我得到一个例外,即用户名对象是只读的。

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

有没有办法只创建一次频道工厂,因为创建频道很昂贵,然后在创建频道时指定用户名凭据?

1 个答案:

答案 0 :(得分:0)

我发现这是不可能的。我知道为每个标识用户的调用添加自定义标头值。您需要这样做,因为您不希望为每个可能会影响您的前端的用户创建工厂。除此之外,创建工厂也很昂贵。