c# – 如何在Windows服务中设置可以访问Windows服务中的有状态信息的WCF ServiceHost

我在C#中编写了一个Windows服务.它运作良好,表现良好.我已向Windows服务添加了WCF服务,以使客户端应用程序能够连接到Windows服务并从Windows服务获取有状态信息.

我将WCF服务配置为单例,以便使用相同的服务实例来处理来自所有客户端的所有请求,如下所示:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]

所有客户端都能够连接并访问WCF服务中的相同有状态信息.但是,我遇到了以下特殊行为.

修订:
我在Windows服务中实例化WCF服务合同.在实例化时分配的任何有状态信息都可用于连接到该服务的所有客户端.

但是,以后直接从Windows服务(而不是客户端)添加到服务合同实例的任何有状态信息对于连接到该服务的客户端是不可见的.就好像有两个服务合同实例:一个用于Windows服务,另一个用于连接到WCF服务的客户端.

什么是实例化WCF服务的推荐(最佳)方法,并使其能够访问Windows服务中可用的有状态信息?

最佳答案
我建议通过将状态保存在静态成员中来完成此操作,这样无论WCF是否为每个调用创建新实例或重用一个实例都无关紧要.这解决了问题并简化了代码.

转载注明原文:c# – 如何在Windows服务中设置可以访问Windows服务中的有状态信息的WCF ServiceHost - 代码日志