在WCF自托管服务中指定Singleton服务

Eri*_*k T 13 wcf self-hosting

我正在编写一个通过WCF公开服务的应用程序.该服务是自托管的(控制台应用程序),需要使用Singleton实例.我试图弄清楚如何在服务配置中指定单例,而不使用服务实现上的属性.是否可以在没有属性的代码中指定单例?

谢谢,埃里克

Lad*_*nka 22

您可以将服务的实例传递给ServiceHost 构造函数,而不是传递类型.在这种情况下,您传递的实例将用作单例.

编辑:

我以前的解决方案不起作用.提供实例ServiceHost构造函数仍然需要ServiceBehaviorAttributeInstanceContextMode.Single.但这个应该工作:

var host = new ServiceHost(typeof(Service));
var behavior = host.Description.Behaviors.Find<ServiceBehaviorAttribute>();
behavior.InstanceContextMode = InstanceContextMode.Single;
host.Open();
Run Code Online (Sandbox Code Playgroud)

ServiceBehaviorAttribute 即使您没有指定它也包含在内,因此您只需要获取它并更改默认值即可.