Я новичок в 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. Для тестирования мне удалось выполнить эту работу за 10-минутные интервалы, и, кажется, что-то сломалось, установив интервал в 15 минут.
Мне кажется, что сеанс WCF Serivce истекает из бездействия, что объясняет, почему таймер просто останавливается. Есть ли способ указать время жизни службы WCF, чтобы я мог включить таймер со страницы aspx, выйти, и служба таймера будет сохраняться? Я видел информацию о настройке значений времени ожидания, но мне все еще неясно, применимо ли это.