2016-10-09 3 views
1

Azure WebJob이 VS2015 디버거에서 실행되는 데 사용되었지만 점차 매우 간헐적으로되어 이제는 전혀 실행되지 않습니다. Azure에 배포하면 문제가 없습니다. 작업이 RunOnStartUp으로 표시됩니다.Azure WebJob이 디버거에서 로컬로 실행되지 않습니다.

public class Program 
{ 
    static void Main() 
    { 
     var config = new JobHostConfiguration(); 
     config.UseTimers(); 
     var host = new JobHost(config); 
     host.RunAndBlock(); 
    } 
} 

public class TestJob : BaseJob 
{ 
    public static async Task StartupJob([TimerTrigger("05:00:00", RunOnStartup = true)] TimerInfo timerInfo, TextWriter log) 
    { 
     log.WriteLine("StartupJob"); 
     await Jobs.Test(some params); 
     log.WriteLine("Sorted"); 
    } 
} 

디버거에서 실행하려면 무엇을해야합니까?

+1

그렇다면 디버거 (Ctrl-F5)에서는 제대로 실행되지만 디버거 (F5)에서는 제대로 실행되지 않습니다. 그것은 정확히 어떻게 실패하고 있습니까? –

+0

StartupJob 함수에서 멈추지 않습니다. 메시지를 "발견"하고 그 이름을 가진 콘솔에 메시지를 인쇄하지만 절대 실행하지 않습니다. Azure에 배포하면 완벽하게 작동하지만 이상적인 것과는 거리가있는 (인쇄 문을 사용하여) 실제 환경에서 디버깅해야합니다. CTRL-F5는 정확히 동일하며 로컬로 실행되지 않습니다. –

답변

6

Azure에서 작업 할 때와 로컬로 디버깅 할 때 같은 저장소 계정을 사용하고 계신 것 같습니까? 그렇다면 TimeTrigger는 싱글 톤으로 실행됩니다. 즉, 실행할 수 있으려면 잠금을 획득해야합니다. 디버깅하려는 로컬 버전이 Azure에서 이미 실행중인 경우 잠금을 획득 할 수 없습니다.

"라이브"Azure 버전 및 로컬 로컬 개발을 위해 다른 저장소 계정을 사용하십시오.

"개발 설정"을 활성화하는 것이 좋습니다. config.UseDevelopmentSettings(); - 로컬에서 디버그 할 때 이 기능을 사용하면 "기능에 대한 잠금을 얻을 수 없습니다 ..."라는 메시지가 표시됩니다 (또는 유사한 내용).

관련 문제