当WCF服务构造函数';s的InstanceContextMode设置为PerSession

本文关键字:InstanceContextMode 设置 PerSession 服务 WCF 构造函数 | 更新日期: 2023-09-27 18:29:34

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方法,该方法将把服务的数据库上传到另一个服务,但它会在一定时间内执行,所以我把它放在另一个线程中,只要服务在运行,它就会一直运行

当WCF服务构造函数';s的InstanceContextMode设置为PerSession

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

您需要编写服务行为或端点行为。在这种行为中,在第一次从客户端调用时调用函数,并将变量设置为true,并将其存储在某个永久内存或文件位置。您可能会看到以下关于扩展WCF 的msdn文章

使用静态构造函数?在代码中对该类执行任何操作之前,它将被调用一次。