我是WCF的新手,所以也许这是最好的另一种方式。指定一个WCF服务会话无限期地持续
现在我有一个WCF服务的集合,但我正在尝试构建每周发送电子邮件的功能。要做到这一点我建立与下面的代码中的另一个WCF服务:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, AutomaticSessionShutdown = false)]
public class TimerService : ITimerService
{
private static Timer timer;
private static TimeSpan tSpan = new TimeSpan(0, 0, 20, 0);
private static OtherService Ref = new OtherService();
public void ToggleEmailTimer(bool enabled)
{
if (enabled)
timer = new Timer(new TimerCallback(TimerElapsed), null, tSpan, tSpan);
else
{
if(timer != null)
timer.Dispose();
}
}
private void TimerElapsed(object state)
{
Ref.SendWeekly();
}
}
它开始禁用,启用它从一个aspx page.For测试,我已经成功地做这项工作10周分钟的时间间隔,并它似乎在将间隔设置为15分钟左右的时候出现断点。
对我来说,看起来WCF Serivce会话将从不活动状态过期,这可以解释计时器刚刚停止的原因。有没有一种方法来指定WCF服务的生命周期,以便我可以从aspx页面启用计时器,退出,并且定时器服务将会持续下去?我已经看到有关设置超时值的信息,但是我仍然不清楚这是否适用。
只是好奇你为什么没有把它设置为Windows服务或托管在Windows服务中。听起来像是长时间运行,预定活动,很少或没有用户交互的良好候选人。 – 2010-07-28 02:07:45
它实际上听起来像是一个更好的计划任务的候选人。 – Josh 2010-07-28 02:22:42
事情是我需要,当我触发我需要调用我的其他现有的Web服务之一,有没有一种简单的方法来做到这一点? – BTmuney 2010-07-28 05:25:43