当InstanceContextMode设置为PerSession时,如何为所有客户端运行一次WCF服务构造函数?

ServiceBehaviorAttribute.InstanceContextMode设置为PerSession如何仅在WCF服务的构造函数中运行一次代码?

 [ServiceBehavior( InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Single)] public class SomeService : ISomeService { public SomeService() { this.RunThisOnceForAllClients(); } private void RunThisOnceForAllClients() { } } 

或者,如何在WCF服务运行后自动运行方法,但是对于所有客户端调用只会运行一次

请帮忙。 提前致谢。


我使用托管Windows服务部署我的WCF 服务 。 我的代码是在C#中。 框架在.NET 4中。项目是在Visual Stuido 2010 Professional中构建的。 该服务由Windows窗体应用程序使用。 如果你想知道为什么我需要像这样做,我需要执行一个 Uploader 方法,将服务的数据库上传到另一个服务,但它将在一定时间内执行,所以我把它放在另一个线程只要服务正在运行,它就会一直运行。

为什么不在Windows服务中托管WCF服务之前运行此操作,以便在WCF服务联机后立即就绪。 您可以从正在运行的线程获取已完成的事件,然后部署WCF服务。

您需要编写服务行为或端点行为。 在此行为中,首先从客户端调用函数并将变量设置为true并将其存储在某个permament内存或文件位置。 您可以查看以下关于扩展WCF的msdn文章

使用静态构造函数? 当代码中包含该类的任何操作(之前)时,它将被调用一次。