我们有一个MVC应用程序,通过wcf使用下游Web服务。 我们遵循注册单个ChannelFactory的proposed approach,它将创建一个通道InstancePerDependency(如果我没有记错的话)。
我们在生产中观察到以下问题:
我怀疑某些渠道没有妥善处理。 ChannelFactory保留所有通道的列表(OnCreated在获取锁之后将新通道添加到列表中)。获取锁定后,当某个通道关闭或中止时,它将从列表中删除。如果列表变得很大,则删除可能需要很长时间,并且OnCreated必须等待锁定。
我们在Controller方法中注入了autofac解析的IService,在某些情况下也使用DependecyResolver.Current.GetService。我的理解是autofac WCF集成将负责处理。那不是这样吗?确保渠道处置的正确方法是什么?
答案 0 :(得分:0)
在问题中表达的怀疑证明是真的,渠道正在泄漏。 手头的应用程序有两个问题: