我最近开始开发一个相对简单的 WCF REST 服务,它返回 JSON 格式的结果。起初一切都很好,服务很快就启动并运行了。
该服务的主要功能是返回从数据库中提取的大量数据。这些数据很少改变,所以我决定尝试设置一个缓存机制来加快速度。为此,我计划设置 InstanceContextMode.Single 和 ConcurrencyMode.Multiple,然后使用一些线程锁,安全地返回静态缓存结果。每隔 5 分钟左右,或者每当 IIS 决定清除所有内容时,都会从数据库中重新获取数据。
我的问题是 InstanceContextMode.Single 没有按预期运行。我的理解是应该创建和维护我的 WCF 服务类的单个实例。但是,我的行为是每次调用都会创建我的 Class 的全新实例。这包括重新初始化所有静态变量。
我尝试将 Web 服务从 webHttpBinding(用于 REST)更改为 wsHttpBinding 并将该服务用作 SOAP 配置,但这会导致完全相同的行为。
我究竟做错了什么!!!花了太长时间试图弄清楚这一点。
任何帮助都会很棒!