2011-01-06 143 views
1

我有一個WCF服務應用程序項目與一個REST服務,它的InstanceContextMode設置爲單一。它包含一個我想用來定期檢查註冊的計時器。WCF服務應用程序定時器

定時器不會啓動,直到有人第一次呼叫該服務爲止。我想知道的是,ASP.NET網站中是否存在某種類似的超時,如果沒有人使用它,或者定時器繼續運行,IIS將停止服務。

[ServiceContract] 
public interface IRegistrationService 
{ 
    [OperationContract, WebGet...] 
    void Register(...); 
} 

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
public class RegistrationService : IRegistrationService 
{ 
    private Timer timer; 
    public RegistrationService() 
    { 
     this.timer = new System.Timers.Timer(1000 * 60 * 5); 
     this.timer.Elapsed += OnTimerElapsed; 
     this.timer.Start(); 
    } 

    private void OnTimerElapsed(object sender, ElapsedEventArgs e) 
    { 
     // 
    } 
} 

回答

1

它會繼續運行,直到主機應用程序啓動並運行。如果您的服務託管在IIS中並且Keep-Alive被禁用,它將被關閉,但是在winforms或windows服務主機的情況下,對象將一直持續直到應用程序關閉。要關閉此對象,請使該服務處於Disposable狀態,並在timerElapsed時處理該類。

+0

我的服務託管在IIS中。我使用稱爲TSOHost的第三方託管,我認爲他們使用IIS7,顯然Keep-Alive默認啓用,但我不能說我記得在我的主機配置頁面看到這個設置。謝謝,我會檢查這是否啓用。 – sfsdfsdf 2011-01-06 11:51:28

相關問題