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

时间:2012-03-30 06:08:59

标签: c# wcf service .net-4.0

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

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

    private void RunThisOnceForAllClients() { }
}

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

请帮忙。提前谢谢。


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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

使用静态构造函数?在您的代码中使用该类的任何操作之前(之前)将调用它。