我用 C# 编写了一个 Windows 服务。它运行良好并且表现良好。我在 Windows 服务中添加了 WCF 服务,以使客户端应用程序能够连接到 Windows 服务并从 Windows 服务中获取有状态信息。
我将 WCF 服务配置为单例,以便使用同一个服务实例来处理来自所有客户端的所有请求,如下所示:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
所有客户端都能够连接并访问 WCF 服务中的相同状态信息。但是,我遇到了以下特殊行为。
修订:我在我的 Windows 服务中
实例化 WCF服务合同。在实例化时分配的任何有状态信息都可用于连接到服务的所有客户端。
但是,稍后直接从 Windows 服务(不是由客户端)添加到服务合同实例的任何状态信息对于连接到该服务的客户端是不可见的。就好像服务契约有两个实例:一个用于 Windows 服务,一个用于连接到 WCF 服务的客户端。
实例化 WCF 服务并使其能够访问 Windows 服务中可用的状态信息的推荐(最佳)方法是什么?