当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
方法,将服务数据库上传到另一个服务,但它将在一定时间内执行,所以我把它放在另一个线程中,只要服务正在运行,它就会一直运行。
功能
答案 0 :(得分:1)
您需要编写服务行为或端点行为。在此行为中,首先从客户端调用函数并将变量设置为true并将其存储在某个permament内存或文件位置。 您可以查看以下msdn article about Extending WCF
答案 1 :(得分:1)
为什么不在Windows服务中托管WCF服务之前运行此操作,以便在WCF服务联机后立即就绪。您可以从正在运行的线程获取完成的事件,然后部署WCF服务。
答案 2 :(得分:0)
使用静态构造函数?在您的代码中使用该类的任何操作之前(之前)将调用它。