使用静态数据遇到WCF服务问题

时间:2010-06-29 18:26:59

标签: c# .net wcf

3 个答案:

答案 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)]属性?

Link to MSDN Forum