2011-01-06 4 views
1

저는 REST 서비스가있는 WCF 서비스 응용 프로그램 프로젝트에 InstanceContextMode가 Single로 설정되어 있습니다. 그것은 정기적으로 통과하고 등록을 확인하는 데 사용하고자하는 타이머가 포함되어 있습니다.WCF 서비스 응용 프로그램 타이머

누군가가 처음으로 서비스에 전화 할 때까지 타이머가 시작되지 않습니다. 내가 알고 싶은 것은, 아무도 잠시 동안 사용하지 않거나 타이머가 계속 실행되지 않으면 IIS가 서비스를 중지 할 ASP.NET 웹 사이트와 같은 일종의 시간 초과입니까?

[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 서비스 호스트의 경우 개체는 응용 프로그램이 닫힐 때까지 유지됩니다. 이 객체를 닫으려면 일회용 서비스를 만들고 timerElapsed가 될 때 클래스를 처리하십시오.

+0

내 서비스가 IIS에서 호스팅됩니다. TSOHost라는 타사 호스팅을 사용하고 있습니다. IIS7을 사용하고 있으며 Keep-Alive가 기본적으로 활성화되어 있다고 생각하지만 호스트 설정 페이지에서이 설정을 기억하고 있다고 말할 수는 없습니다. 감사합니다.이 기능이 활성화되어 있는지 확인하겠습니다. – sfsdfsdf

관련 문제