我的应用程序正在使用带有回调 channel 的 net.tcp WCF 服务。由于某种原因,我无法发送事件回调。这就是我正在做的事情(所有代码都在服务器端):
初始化时:
OperationContext Context { get; protected set; }
...
Context = OperationContext.Current;
事件发生时:
var callback = Context.GetCallbackChannel<IServiceCallbackContract>();
callback.SomeMethod();
此操作在 SomeMethod()
上失败,并出现以下异常:{"无法访问已处置的对象。\r\n对象名称: 'System.ServiceModel.Channels.ServiceChannel'。"}
显然,即使客户端仍然能够使用直接(非回调) channel 与服务器通信,某些东西也会处理回调 channel 。这很奇怪。我应该保留哪个对象才能发出回调?是否必须在某个线程中运行?
最佳答案
Configure Tracing并查看是什么异常导致您的 channel 出现故障。
关于.net-3.5 - WCF 回调 channel 被过早处置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/866151/