TimerTrigger em C# não está acionando

0

Pergunta

Eu estou usando TimerTrigger CRON job para agendar uma tarefa para 2 dias, mas o gatilho não parecem funcionar. A seguir é o código que eu tentei,

public static void StartupJob([TimerTrigger("0 * * * * *", RunOnStartup = true)] TimerInfo timerInfo) //0 * * * * * added CRON job to run for every minute for testing purpose
        {
            Console.WriteLine("Timer job fired!");
        }

locais.configurações.json

{
    "IsEncrypted": false,
    "Values": {
      "AzureWebJobsStorage": "UseDevelopmentStorage=true",
      "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    }
}

Como o código acima não estava funcionando, eu adicionei o seguinte para o main()

static void Main()
        {
            var config = new JobHostConfiguration();
            config.UseTimers();
            config.Tracing.ConsoleLevel = System.Diagnostics.TraceLevel.Verbose;

            if (config.IsDevelopment)
            {
                config.UseDevelopmentSettings();
            }

            var host = new JobHost(config);
            // The following code ensures that the WebJob will be running continuously
            host.RunAndBlock();
        }

Recebendo o seguinte erro e mostrando correção como instalar DocumentFormat pacote, mas ao instalar este pacote não está resolvendo o FunctionName erro.

enter image description here

Eu sou um novato em C#, e não consegue encontrar qual é o problema aqui. Qualquer ajuda ou referência a exemplos de boas seria útil e apreciado.

Obrigado.

azure-functions azure-webjobs c# cron
2021-11-14 18:01:13
1

Melhor resposta

0

Tentei reproduzir o problema e descobri.

  1. Em primeiro lugar, eu criei Azure Função no Visual Studio e Selecionado o Temporizador de Trigger > Clique em criar enter image description here

  2. Como por sua exigência para executar este timer função de gatilho em todos os minutos, mudou a expressão para [TimerTrigger("0 * * * * *")]

enter image description here

  1. Depois disso, criar o projeto e executar a função localmente. A Saída é:

enter image description here

  1. Criada a Função de Aplicação no Azure (consumo de plano).
  2. Publicado a função acima app para Azure função de aplicativo do visual studio.
  3. Em seguida, Vá para o Portal Azure > Sua Função app > Funções (à esquerda do painel índice) > Clique no seu nome de função (no meu caso é Function1) enter image description here

Depois disso, Vá para o Código de+de Integração, Clique em Test/Executar a sua função e os logs vai começar a registrar a execução da função, como abaixo:

enter image description here

Exemplo 2 (Com o código especificado na pergunta):

enter image description here

enter image description here

O problema é que Console.Writeline é uma função estática. Você pode redirecionar a saída (stdout) para algum lugar, mas você não pode rastrear onde que a instrução foi executada depois que ele chegou a stdout.

Para que possamos fazer o nosso por invocação de Função de log, precisamos saber em qual função ele veio e para o qual determinado id de invocação, ele pertencem. Isto é o que o TraceWriter não. A partir daí, o nosso mecanismo de registro de tubos para Armazenamento para o nosso painel para pegar. Fazemos tubo stdout o tubo para o WebJob logs, mas não é simples para amarrá-lo de volta para uma determinada chamada.

Para mais informações, siga este : https://github.com/Azure/azure-webjobs-sdk/issues/682

De outra maneira pode-se usar é de log personalizado quadro (e.g. Serilog) e direcionar a saída do log para o Console.

Para obter mais informações sobre o log de amostras, você pode seguir o link abaixo :

https://docs.microsoft.com/en-us/sandbox/functions-recipes/logging?tabs=csharp

2021-11-16 12:23:17

Se o publicado resposta ajudou, você pode marcá-la como a resposta clicando na marca de seleção. Isso pode ajudar outros membros da comunidade.
HariKrishnaRajoli-MT

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................