我有一个使用WCF服务的WPF应用程序。服务实例上下文模式设置为PerSession。在服务中有一个方法,它回调客户端,发送从外部队列收到的消息。
当我启动新服务并运行应用程序时,一切正常,回调通道处于打开状态。当我关闭应用程序并再次运行它时,回调总是抛出'无法访问已处置的对象'错误并且处于关闭状态。
要连接到服务表单客户端,我使用DuplexChannelFactory,关闭应用程序通道和通道facotry后。我可以在日志中看到调用Closing和Closed事件。我认为也许服务是持有最后一个会话,或者当我重新运行应用程序时它连接到已关闭的同一个通道。我检查了会话ID,它们是不同的。 UUid是一样的。
对我来说,看起来客户端应用程序在重启后使用相同的频道。服务方是否缓存了关于渠道的事情?
我希望我给出足够的解释。如果需要,我会提供更多信息。任何想法如何解决这个问题?
由于
答案 0 :(得分:1)
我遇到了类似的错误,其中的问题是Internet信息服务(IIS)应用程序池的“请求限制”太有限,导致应用程序池在每次请求后都回收。只需将“请求限制”值更改为0(即无限制)或更高的数字,即可解决问题。
更改“请求限制”: