答案 0 :(得分:1)
是经常发生还是偶尔发生?它是在开发中发生还是仅在生产服务器上发生(一段时间后)?
当您在IIS下托管此服务器时,服务器可能会决定“回收”您的应用。基本建议:不要在服务器应用中使用static
。它不可靠,不可扩展。
编辑
好的,我已经阅读了一点(但不是全部)。
问题是从返回时 每个OperationContract方法,GC 正在调用Dispose ISeriesSystem或Queue对象
您应该非常详细地验证。它真的是GC调用你的Finalizer(又称析构函数)吗?您应该使用日志记录或调试来验证是否正在调用重载Dispose(false)。如果调用Dispose(true)(我看到很多代码涉及到这一点),你应该堆栈跟踪实际原因。
答案 1 :(得分:0)
您可以输入以下代码:
[ServiceContract(SessionMode = SessionMode.Required)]
您的服务合同只是为了确保正在创建传输会话?如果不是这应该抛出错误。
WSHttpBinding
在没有安全性和可靠会话的情况下不会创建传输会话。
编辑:
除此之外,由于您正在创建Single Instance
服务,为什么还需要静态成员?只有一个实例存活,因此,该实例的任何实例成员都将使用它并且将是静态的。你有没有想过这个或者有使用静态成员的具体原因?
答案 2 :(得分:0)
我知道有点晚了,但您是否尝试过添加[OperationBehavior(AutoDisposeParameters = false)]
属性?