json - InstanceContextMode.WCF wsHttpBinding、webHttpBinding 和 REST 中的 Single

标签 json wcf rest webhttpbinding instancecontextmode

我最近开始开发一个相对简单的 WCF REST 服务,该服务返回 JSON 格式的结果。起初一切都很好,服务很快就启动并运行了。

该服务的主要功能是返回从数据库中提取的大量数据。这些数据很少改变,所以我决定尝试设置一个缓存机制来加快速度。为此,我计划设置 InstanceContextMode.Single 和 ConcurrencyMode.Multiple,然后使用一些线程锁,安全地返回静态缓存结果。每 5 分钟左右,或者每当 IIS 决定清除所有内容时,就会从数据库中重新获取数据。

我的问题是 InstanceContextMode.Single 未按预期运行。我的理解是应该创建和维护我的 WCF 服务类的单个实例。但是,我的行为是每次调用都会创建我的类的一个全新实例。这包括重新初始化所有静态变量。

我尝试将 Web 服务从 webHttpBinding(用于 REST)更改为 wsHttpBinding 并将该服务用作 SOAP 配置,但这会导致完全相同的行为。

我做错了什么!!!花了太长时间试图解决这个问题。

任何帮助都会很棒!

最佳答案

奇怪,你能试试这个然后告诉我会发生什么吗?

ServiceThrottlingBehavior ThrottleBehavior = new ServiceThrottlingBehavior();
ThrottleBehavior.MaxConcurrentSessions = 1;
ThrottleBehavior.MaxConcurrentCalls = 1;
ThrottleBehavior.MaxConcurrentInstances = 1;

ServiceHost Host = ...
Host.Description.Behaviors.Add(ThrottleBehavior);

而且 [如何] 您知道您的单一服务实例不是“单一”的?您从分析器中看到了多个数据库连接?这就是为什么您的服务不是单个实例向您提出的建议吗?在您的服务操作实现中,您是否在单独的线程上执行某些工作?

关于json - InstanceContextMode.WCF wsHttpBinding、webHttpBinding 和 REST 中的 Single,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12852371/

相关文章:

java - 使用geoserver的REST API上传SLD的图形

android - 在 flutter 中将 List<T> 转换为 json

python - 使用规范化展平三重嵌套 JSON

java - 编辑 .json 文件 : adding lines in certain parts of the file?

sql-server - 部署 WCF 服务

node.js - 前端发送正常的http请求有哪些方式?

json - 使用 swift 发布 json

c# - WCF net.tcp 与基于证书的消息安全性绑定(bind)但安全模式已关闭

wcf - 如何修复 WCF 的循环引用问题

javascript - 如何从 WADL 生成 JavaScript 客户端 stub ?