正如问题所说。目前,我们正在为每个会话的服务缓存 WCF 客户端代理(准确地说是 ChannelFactory)。这工作正常。但是现在我们已经转移到 Azure,并且有多个实例(会话)。我现在让 AppFabric 会话状态正常工作。所以会话是由 Azure 提供的,但现在问题在于通道工厂的缓存。因为工厂不是 [Serializable],因此它似乎无法存储在 Session[] 中。有什么选择?每次调用 WCF 服务方法时是否应该重新创建通道?
[ 1.以前的工作状态;2.新尝试的解决方案;3. 后备选项]
- WCF 客户端 -> ASP.NET -> 会话缓存工厂 -> 通道 -> WCF 服务
- WCF 客户端 -> ASP.NET -> 无法存储工厂!-> 频道 -> Azure 角色 WCF 服务
- WCF 客户端 -> ASP.NET -> 每次调用新通道 -> Azure 角色 WCF 服务
更新:我们已经确定,不能缓存(共享)ChannelFactory。所以问题仍然存在,我如何共享凭据 (UserNameCredentials),因此现在没有共享,并且必须以某种方式分布在拆分实例中。显而易见的选择是将加密的凭据存储在缓存中?这是个好主意吗?还有其他方法吗?
这继续作为一个新问题:如何共享 WCF 客户端凭据...