2017-09-28 5 views
1

저는 매일 오전 1시에 실행해야하는 웹 작업이 있습니다. 내 settings.job는 다음과 같이 구성되어 있습니다 :예약 된 웹 작업이 일정에 대해 혼란 스럽습니다.

{ 
    "schedule": "0 0 1 * * *", 
    "is_singleton": true 
} 

나는 Functions.cs에 선언 된 기능이

namespace Dsc.Dmp.SddUpgrade.WebJob 
{ 
    using System; 
    using System.IO; 

    using Microsoft.Azure.WebJobs; 

    public class Functions 
    { 
     public static void TriggerProcess(TextWriter log) 
     { 
      log.Write($"C# Timer trigger function executed at: {DateTime.Now}"); 
     } 
    } 
} 

내가 무엇입니까 다음과 같은 로그 :

[09/28/2017 12:02:05 > 9957a4: SYS INFO] Status changed to Running 
[09/28/2017 12:02:07 > 9957a4: INFO] No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. config.UseServiceBus(), config.UseTimers(), etc.). 

나는 읽으면서 문서화, 일부 사람들은 다음과 같은 함수 서명을 사용합니다.

public static void TriggerProcess([TimerTrigger("0 0 1 * * *")] TimerInfo timerInfo, TextWriter log) 

그러나이 설정은 settings.job에서 예약하여 이미 내 웹 작업을 구성했기 때문에 나에게 논리적으로 보이지 않습니다.

무엇이 여기에 있습니까?

+0

Program.cs의 Main 기능을 볼 수 있습니까? –

답변

0

settings.job 파일을 사용하여 WebJob을 예약하면 로직이 Program.cs의 Main 기능에 있어야합니다. 이 경로를 지나면 Functions.cs 파일을 무시할 수 있습니다. 이 기능은 콘솔 앱을 WebJob으로 마이그레이션하고 일정을 잡는 데 유용합니다.

TimerTrigger는 WebJob 확장입니다. Functions.cs에 여러 메서드를 포함 할 수 있기 때문에 유용합니다. 각 메서드마다 다른 일정으로 실행되는 별도의 TimerTrigger가 있습니다. 이를 사용하려면 WebJob이 연속적이어야합니다.

+0

그건 의미가 있습니다! – Identity

+0

한 가지 더 궁금한 점이 있습니다. 콘솔 앱 접근 방식을 선택한 경우 어떻게하면 webjob에 로그인 할 수 있습니까? 그냥 Console.WriteLine을 사용하여? – Identity

+0

보기 : https://stackoverflow.com/questions/22417081/how-do-i-write-to-the-logs-in-azure-webjobs-from-a-c-sharp-console-app –

2

로직을 Program.cs에 넣어야합니다.

런타임은 Program.cs에서 Main 메서드를 실행하여 실행 파일을 실행하여 WebJob을 실행합니다.