【发布时间】:2011-10-11 15:56:36
【问题描述】:
我正在使用ChannelFactory<T> 类型将通道创建到WsHttpBinding WCF Web 服务中,并且该服务使用用户名/密码组合进行身份验证。虽然我使用自定义验证器进行身份验证,但在创建具有不同凭据的通道时遇到了困难。
考虑到创建ChannelFactory<T> 的开销,我试图缓存它的单个实例并共享它,以便在我的应用程序的生命周期内创建多个通道。不幸的是,凭据似乎直接与工厂绑定,并且在创建通道后无法更改。
换句话说,如果我尝试这个:
factory.Credentials.UserName.UserName = "Bob";
factory.Credentials.UserName.Password = "password";
var channel1 = factory.CreateChannel();
factory.Credentials.UserName.UserName = "Alice"; // exception here
factory.Credentials.UserName.Password = "password";
var channel1 = factory.CreateChannel();
我收到一个异常,告诉我 UserName 属性现在是只读的。
是否可以在这里实现任何类型的缓存,还是我必须为每个用户名缓存一个 ChannelFactory 实例?
【问题讨论】:
标签: .net wcf channelfactory