我有一个使用WCF服务的WPF应用程序。服务实例上下文模式设置为PerSession。在服务中有一个回调客户端的方法,发送从外部队列接收到的消息。WCF - 无法访问处置的对象
当我开始新的服务和运行应用程序时,一切正常,回调通道已打开状态。当我关闭应用程序并再次运行时,回调总是抛出'无法访问处置对象'错误并且处于关闭状态。
要连接到服务表单客户端,我使用DuplexChannelFactory,在关闭应用程序通道和通道设施后处理。我可以在日志中看到Closing和Closed事件被调用。我认为服务可能是最后一个会话,或者当我重新运行连接到已关闭的同一频道的应用程序时。我检查了会话ID,他们是不同的。 UUid是一样的。
对我来说,它看起来像客户端应用程序重新启动后使用相同的渠道。服务端是否缓存关于频道的内容?
我希望我给了足够的解释。如果需要,我会提供更多信息。任何想法如何解决这个问题?
感谢
您确定您收到的错误不是来自WCF服务本身吗?也许在第一次断开连接之后,WCF服务中会发生一些事件,导致下一次连接发生异常。另外,你是否获得了WCF服务初始化时的错误,或者当你真的试着调用一个函数? –
你有完整的堆栈跟踪吗? –
此行为是设计使然。当客户关闭时,回调通道将关闭。 –