Tutorial: Introdução ao SDK do Azure WebJobs para processamento em segundo plano controlado por eventos

Comece a usar o SDK do Azure WebJobs para Azure App Service para permitir que seus aplicativos Web executem tarefas em segundo plano, tarefas agendadas e respondam a eventos.

Neste tutorial, você utilizará o Visual Studio 2022 para desenvolver um aplicativo de console .NET 8 que utiliza o SDK do WebJobs para responder às mensagens da fila de armazenamento do Azure. Em seguida, execute o projeto localmente e, por fim, implante-o no Azure.

Você aprenderá como:

  • Criar um aplicativo de console
  • Adicionar uma função
  • Testar localmente
  • Implantar no Azure
  • Habilitar o registro em log do Application Insights
  • Adicionar associações de entrada/saída

Pré-requisitos

Criar um aplicativo de console

Nesta seção, você começa criando um projeto no Visual Studio 2022. Em seguida, você adiciona ferramentas para executar o desenvolvimento do Azure, a publicação de código e funções que detectam gatilhos, bem como funções de chamada. Por fim, você configura o log do console que desabilita uma ferramenta de monitoramento herdada e habilita um provedor de console com filtragem padrão.

Observação

Os procedimentos neste artigo são verificados para a criação de um aplicativo de console em C# executado no .NET 8.0.

Criar um projeto

  1. Em Visual Studio, selecione File>New>Project.

  2. Em Criar um projeto, selecione Aplicativo de Console (C#) , depois clique em Próximo.

  3. Em Configurar seu novo projeto, nomeie o projeto como WebJobsSDKSample, depois clique em Criar.

  4. Selecione sua Estrutura de destino, depois clique em Criar. Este tutorial foi verificado usando .NET 8.0.

Instalar pacotes NuGet de WebJobs

Instale o pacote NuGet mais recente do WebJobs. Esse pacote inclui Microsoft.Azure. WebJobs (WebJobs SDK), que permite publicar seu código de função em WebJobs no Azure App Service.

  1. Baixe a versão estável 4.x mais recente do pacote Microsoft.Azure.WebJobs.Extensions NuGet.

  2. Em Visual Studio, vá para Tools>NuGet Package Manager.

  3. Selecione Package Manager Console. No console, você vê uma lista de cmdlets NuGet, um link para a documentação e o ponto de entrada PM>.

  4. No comando abaixo, substitua <4_X_VERSION> pelo número de versão atual encontrado na etapa 1.

    Install-Package Microsoft.Azure.WebJobs.Extensions -version <4_X_VERSION>
    

    Observação

    O código de exemplo neste artigo funciona com as versões de pacote 4.x. Certifique-se de usar uma versão 4.x, pois ocorrem erros de build ao usar as versões do pacote 5.x.

  5. No console Package Manager, execute o comando. A lista de extensões será exibida e instalada de modo automático.

Crie o Host

O host é o contêiner de execução de funções que monitora gatilhos e chama funções. As etapas a seguir criam um host que implementa IHost, que é o Host Genérico no ASP.NET Core.

  1. Selecione a guia Program.cs, remova o conteúdo existente e adicione estas instruções using:

    using System.Threading.Tasks;
    using Microsoft.Extensions.Hosting;
    
  2. Ainda na guia Program.cs, adicione o seguinte código:

    namespace WebJobsSDKSample
    {
        class Program
        {
            static async Task Main()
            {
                var builder = new HostBuilder();
                builder.ConfigureWebJobs(b =>
                {
                    b.AddAzureStorageCoreServices();
                });
                var host = builder.Build();
                using (host)
                {
                    await host.RunAsync();
                }
            }
        }
    }
    

Em ASP.NET Core, as configurações de host são definidas chamando métodos na instância HostBuilder. Para obter mais informações, consulte .NET Host Genérico. O método de extensão ConfigureWebJobs inicializa o host do WebJobs. Em ConfigureWebJobs, inicialize extensões de associação específicas, como a extensão de associação do Armazenamento e defina as propriedades dessas extensões.

Habilitar o registro em log de console

Configure o registro em log do console que usa a estrutura de registros do ASP.NET Core. Essa estrutura, Microsoft.Extensions.Logging, inclui uma API que funciona com vários provedores de log integrados e não Microsoft.

  1. Obtenha a versão estável mais recente do pacote NuGet Microsoft.Extensions.Logging.Console, que inclui Microsoft.Extensions.Logging.

  2. No comando abaixo, substitua <9_X_VERSION> pelo número de versão atual encontrado na etapa 1. Cada tipo de Pacote NuGet tem um número de versão exclusivo.

    Install-Package Microsoft.Extensions.Logging.Console -version <9_X_VERSION>
    
  3. No console Package Manager, preencha o número de versão atual e execute o comando. A lista de extensões será exibida e instalada de modo automático.

  4. Na guia Program.cs, adicione esta instrução using:

    using Microsoft.Extensions.Logging;
    
  5. Ainda em Program.cs, adicione o método ConfigureLogging ao HostBuilder, antes do comando Build. O método AddConsole adiciona o log de console na configuração.

    builder.ConfigureLogging((context, b) =>
    {
         b.SetMinimumLevel(LogLevel.Error);
         b.AddFilter("Function", LogLevel.Information);
         b.AddFilter("Host", LogLevel.Debug);
         b.AddConsole();
    });
    

    Este método adiciona um registro em log que captura a saída de log para execuções de funções no nível Information, o host no nível Debug e o nível error para todos os outros componentes. O método Main agora tem esta aparência:

    static async Task Main()
    {
        var builder = new HostBuilder();
        builder.ConfigureWebJobs(b =>
        {
            b.AddAzureStorageCoreServices();
        });
        builder.ConfigureLogging((context, b) =>
        {
            b.SetMinimumLevel(LogLevel.Error);
            b.AddFilter("Function", LogLevel.Information);
            b.AddFilter("Host", LogLevel.Debug);
            b.AddConsole();
        });
        var host = builder.Build();
        using (host)
        {
            await host.RunAsync();
        }
    }
    

    Essa adição vai executar as seguintes alterações:

    • Desabilita o log do dashboard. O painel é uma ferramenta de monitoramento herdada, e o registro em log do painel não é recomendado para cenários de produção de alta taxa de transferência.
    • Adiciona o provedor de console com filtragem padrão.

Agora, você pode adicionar uma função que é disparada por mensagens que chegam a uma fila de Armazenamento do Microsoft Azure.

Adicionar uma função

Uma função é uma unidade de código que é executada em um agendamento, é disparada com base em eventos ou é executada sob demanda. O gatilho detecta um evento de serviço. No contexto do SDK de WebJobs, "triggered" não se refere ao modo de implantação. WebJobs agendados ou controlados por eventos criados usando o SDK sempre devem ser implantados como WebJobs contínuos com Always on habilitado.

Nesta seção, você criará uma função disparada por mensagens em uma fila de Azure Storage. Primeiro, você precisa adicionar uma extensão de associação para se conectar ao Azure Storage.

Instalar a extensão de associação do Storage

A partir da versão 3 do SDK do WebJobs, para se conectar aos serviços de Azure Storage, você deve instalar um pacote de extensão de associação de armazenamento separado.

Observação

A partir da versão 5.x, Microsoft.Azure.WebJobs.Host.Storage é separado de acordo com o serviço de armazenamento, com o método de extensão AddAzureStorage() migrado conforme o tipo de serviço. Essa versão também exige que você atualize a versão do assembly Microsoft.Azure.WebJobs.Host.Storage usado pelo SDK.

  1. Obtenha a versão estável mais recente do Microsoft.Azure. WebJobs.Extensions.Storage pacote NuGet, versão 5.x.

  2. No comando abaixo, substitua <5_X_VERSION> pelo número de versão atual encontrado na etapa 1. Cada tipo de Pacote NuGet tem um número de versão exclusivo.

    Install-Package Microsoft.Azure.WebJobs.Extensions.Storage -Version <5_X_VERSION>
    
  3. No console Package Manager, execute o comando com o número de versão atual no ponto de entrada PM>.

  4. Execute também este comando para atualizar o pacote Microsoft.Azure.WebJobs.Host.Storage para a versão 4.1.0:

    Install-Package Microsoft.Azure.WebJobs.Host.Storage -Version 4.1.0
    
  5. Ainda em Program.cs, no método de extensão ConfigureWebJobs, adicione o método AddAzureStorageQueues na instância HostBuilder (antes do comando Build) para inicializar a extensão do Armazenamento. Neste momento, o método ConfigureWebJobs será semelhante ao seguinte:

    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddAzureStorageQueues();
    });
    
  6. Adicione o seguinte código no método Main depois que o builder for instanciado:

    builder.UseEnvironment(EnvironmentName.Development);
    

    A execução no modo de desenvolvimento reduz a retirada exponencial da sondagem de fila. Esse algoritmo de sondagem pode atrasar significativamente o tempo necessário para que o runtime localize a mensagem e invoque a função. Será necessário remover essa linha de código ou alternar para Production ao finalizar o desenvolvimento e o teste.

    O método Main agora deve ser semelhante ao seguinte exemplo:

    static async Task Main()
    {
        var builder = new HostBuilder();
        builder.UseEnvironment(EnvironmentName.Development);
        builder.ConfigureWebJobs(b =>
        {
            b.AddAzureStorageCoreServices();
            b.AddAzureStorageQueues();
        });
        builder.ConfigureLogging((context, b) =>
        {
            b.SetMinimumLevel(LogLevel.Error);
            b.AddFilter("Function", LogLevel.Information);
            b.AddFilter("Host", LogLevel.Debug);
            b.AddConsole();
        });
        var host = builder.Build();
        using (host)
        {
            await host.RunAsync();
        }
    }
    

Criar uma função acionada por filas

O atributo QueueTrigger informa ao runtime para chamar essa função quando uma nova mensagem é gravada em uma fila de Azure Storage chamada queue. O conteúdo da mensagem da fila é fornecido ao código do método no parâmetro message. O corpo do método é onde você processa os dados acionadores. Neste exemplo, o código apenas registra a mensagem.

  1. Em Solution Explorer, clique com o botão direito do mouse no projeto, selecione Add>New Item e selecione Class.

  2. Nomeie o novo arquivo de classe C# como Functions.cs, depois clique em Adicionar.

  3. Em Functions.cs, substitua o modelo gerado pelo seguinte código:

    using Microsoft.Azure.WebJobs;
    using Microsoft.Extensions.Logging;
    
    namespace WebJobsSDKSample
    {
        public static class Functions
        {
            public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger)
            {
                logger.LogInformation(message);
            }
        }
    }
    

    Você deve marcar a classe Functions como public static para que o runtime acesse e execute o método. No exemplo de código anterior, quando uma mensagem é adicionada a uma fila chamada queue, a função é executada e a message cadeia de caracteres é gravada nos logs. A fila que está sendo monitorada está na conta de Azure Storage padrão, que você criará em seguida.

O parâmetro message não precisa ser uma cadeia de caracteres. Você também pode associar a um objeto JSON, uma matriz de bytes ou um objeto CloudQueueMessage. Consulte o uso do gatilho de filas Cada tipo de associação (como filas, blobs ou tabelas) tem um conjunto diferente de tipos de parâmetros que você pode associar.

Criar uma conta de armazenamento Azure

O Emulador Azure Storage que é executado localmente não tem todos os recursos de que o SDK do WebJobs precisa. Você precisa criar uma conta de armazenamento no Azure e configurar o projeto para usá-la.

Para saber como criar uma conta de armazenamento v2 de uso geral, consulte Criar uma conta de Azure Storage.

Encontre e copie sua cadeia de conexão

Um connection string é necessário para configurar o armazenamento. Mantenha esta cadeia de conexão para as próximas etapas.

  1. No portal Azure, navegue até sua conta de armazenamento e selecione Settings.

  2. Em Configurações, selecione Chaves de acesso.

  3. Na Cadeia de conexão em key1, clique no ícone Copiar para a área de transferência.

    Screenshot da caixa de diálogo Chaves de Acesso mostrando como localizar e copiar a cadeia de conexão.

Configurar o armazenamento para executar localmente

O SDK WebJobs procura a cadeia de conexão de armazenamento nas Configurações da Aplicação no Azure. Quando você executa localmente, ele procura esse valor no arquivo de configuração local ou nas variáveis de ambiente.

  1. Clique com o botão direito do mouse no projeto, clique em Adicionar>Novo Item, selecione Arquivo de configuração JSON do JavaScript, nomeie o novo arquivo como appsettings.json, depois clique em Adicionar.

  2. No novo arquivo, adicione um campo AzureWebJobsStorage, como no exemplo a seguir:

    {
        "AzureWebJobsStorage": "{storage connection string}"
    }
    
  3. Substitua {storage connection string} pela cadeia de conexão copiada anteriormente.

  4. Selecione o arquivo appsettings.json no Solution Explorer e, na janela Properties, defina a ação Copy to Output Directory como Copy se for mais recente.

Como esse arquivo contém um segredo de string de conexão, você não deve armazená-lo em um repositório de código remoto. Após publicar seu projeto no Azure, será possível adicionar a mesma configuração do aplicativo da cadeia de conexão em seu aplicativo no Serviço de Aplicativo do Azure.

Testar localmente

Para disparar a função, crie e execute o projeto localmente e crie uma fila de mensagens.

  1. No portal Azure, navegue até sua conta de armazenamento e conclua as etapas a seguir.

    • Selecione a guia Filas (1).
    • Selecione + Fila (2).
    • Insira fila como o nome da fila (3).
    • Selecione OK (4).

    Captura de tela que chama as quatro etapas para criar uma nova Fila de Armazenamento do Azure.

  2. Selecione a nova fila e selecione Adicionar mensagem.

  3. Na caixa de diálogo Adicionar mensagem à fila, insira Hello World! como o texto da mensagem e selecione OK. Agora, há uma mensagem na fila.

    Screenshot da caixa de diálogo Adicionar Mensagem à Fila mostrando o texto 'Hello World!' adicionado como texto da mensagem.

  4. Pressione Ctrl+F5 para executar o projeto.

    O console mostrará que o runtime encontrou sua função. Como você usou o atributo QueueTrigger na função ProcessQueueMessage, o runtime de WebJobs detectará mensagens da fila chamada queue. Quando ele encontra uma nova mensagem nessa fila, o runtime executa uma chamada à função, transmitindo o valor da cadeia de caracteres da mensagem.

  5. Volte para a janela Fila e atualize-a. A mensagem sumiu. Sua função foi executada localmente e processou a mensagem com êxito.

  6. Feche a janela do console ou digite Ctrl+C.

Agora é hora de publicar seu projeto do SDK do WebJobs para Azure.

Implantar no Azure

Durante a implantação, você cria uma instância do serviço de aplicativo em que executa suas funções. Quando você publica um aplicativo de console .NET no Serviço de Aplicativo no Azure, ele é executado automaticamente como um WebJob. Para saber mais sobre publicação, consulte Desenvolver e implantar WebJobs usando o Visual Studio.

Criar recursos de Azure

  1. Em Solution Explorer, clique com o botão direito do mouse no projeto e selecione Publish.

  2. Na caixa de diálogo Publish, selecione Azure para Target e selecione Next.

  3. Selecione Azure WebJobs para Specific target e selecione Next.

  4. Acima de Instâncias do Serviço de Aplicativo, selecione o botão mais (+) para Criar um novo Azure WebJob.

  5. Na caixa de diálogo App Service (Windows), use as configurações de hospedagem na tabela a seguir.

    Configuração Valor sugerido Descrição
    Nome Nome globalmente exclusivo Nome que identifica seu novo aplicativo de funções de forma exclusiva.
    Subscription Escolha sua assinatura A assinatura Azure a ser usada.
    Grupo de recursos myResourceGroup Nome do grupo de recursos no qual criar o seu aplicativo de funções. Escolha Novo para criar um novo grupo de recursos.
    Plano de hospedagem Plano do Serviço de Aplicativo Um plano do Serviço de Aplicativo especifica o local, tamanho e recursos do farm de servidores Web que hospeda o aplicativo. Você pode economizar dinheiro ao hospedar vários aplicativos configurando os aplicativos Web para compartilhar um único plano do Serviço de Aplicativo. Os Planos de Serviço de Aplicativo definem a região, o tamanho da instância, a contagem de escala e a SKU (gratuito, compartilhado, básico, padrão ou premium). Selecione Novo para criar um novo plano do Serviço de Aplicativo. Os níveis Free e Básico não oferecem suporte para a opção Always On, para manter seu site sempre em execução.

    Criar a caixa de diálogo Serviço de Aplicativo

  6. Selecione Create para criar um WebJob e recursos relacionados em Azure com essas configurações e implantar o código do projeto.

  7. Selecione Concluir para retornar à página Publicar.

Habilitar Always On

A fim de obter um WebJob contínuo, será preciso habilitar a configuração do Always On no site para que seus WebJobs sejam executados de modo adequado. Caso não habilite o Always On, o runtime ficará ocioso após alguns minutos de inatividade.

  1. Na página Publish, selecione os três pontos ao lado de Hosting para mostrar as ações da seção do perfil de Hosting e escolha Abrir no portal do Azure.

  2. Em Configurações, selecione Configuração>Configurações gerais, defina Always On como Ativado, depois clique em Salvar e Continuar para reiniciar o site.

Publicar o projeto

Com o aplicativo Web criado em Azure, é hora de publicar o projeto WebJobs.

  1. Na página de Publicação, em Hosting, clique no botão de edição e altere o Tipo de WebJob para Continuous, depois clique em Salvar. Essa configuração garante que o WebJob esteja em execução quando as mensagens são adicionadas à fila. Os WebJobs disparados geralmente são usados somente em webhooks manuais.

    Screenshot mostrando como alterar o tipo de WebJob na janela de publicação do Visual Studio 2022.

  2. Clique no botão Publicar no canto superior direito da página de Publicação. Quando a operação for concluída, o WebJob estará em execução no Azure.

Definir a configuração do aplicativo de conexão de armazenamento

É preciso definir a mesma configuração da cadeia de conexão de armazenamento no Azure usada localmente em seu arquivo de configuração appsettings.json. Essa configuração permite que você armazene o connection string com mais segurança.

  1. Na página de perfil Publish, selecione os três pontos acima Hosting para mostrar as ações da seção de perfil Hosting e escolha Configurações de Azure App Service.

  2. Em Configurações do aplicativo, clique em + Adicionar configuração.

  3. Em Novo nome de configuração do aplicativo, digite AzureWebJobsStorage, depois clique em OK.

  4. Em Remote, cole a cadeia de conexão na configuração local e selecione OK.

O connection string agora está definido em seu aplicativo em Azure.

Acionar a função no Azure

  1. Verifique se a execução não está sendo feita localmente. Feche a janela do console caso ela ainda esteja aberta. Caso contrário, a instância local poderá ser a primeira a processar quaisquer mensagens de fila que você criar.

  2. Na página Queue em Visual Studio, adicione uma mensagem à fila como antes.

  3. Atualize a página Queue e a nova mensagem desaparece porque foi processada pela função em execução no Azure.

Habilitar o registro em log do Application Insights

Quando o WebJob é executado em Azure, você não pode monitorar a execução da função exibindo a saída do console. Para que seja possível monitorar seu WebJob, será preciso criar uma instância associada do Application Insights ao publicar seu projeto.

Crie uma instância do Application Insights

  1. Na sua página de perfil Publish, selecione os três pontos acima de Hosting para mostrar as ações da seção de perfil Hosting e escolha Abrir no portal Azure.

  2. No aplicativo Web em Monitoramento, escolha Application Insights e selecione Ativar o Application Insights.

  3. Verifique o Nome do recurso gerado para a instância e o Local e selecione Aplicar e, em seguida, Sim.

  4. Em Configurações, escolha Variáveis de ambiente e verifique se uma nova APPINSIGHTS_INSTRUMENTATIONKEY foi criada. Essa chave é usada para conectar a instância do WebJob ao Application Insights.

Para aproveitar o registro em log do Application Insights, também será preciso atualizar seu código de registro em log.

Instalar uma extensão do Application Insights

  1. Obtenha a versão estável mais recente do Microsoft.Azure. WebJobs.Logging.ApplicationInsights pacote NuGet, versão 3.x.

  2. No comando abaixo, substitua <3_X_VERSION> pelo número de versão atual encontrado na etapa 1. Cada tipo de Pacote NuGet tem um número de versão exclusivo.

    Install-Package Microsoft.Azure.WebJobs.Logging.ApplicationInsights -Version <3_X_VERSION>
    
  3. No console Package Manager, execute o comando com o número de versão atual no ponto de entrada PM>.

Inicializar o provedor de registro em log do Application Insights

Abra o Program.cs e adicione o seguinte inicializador no ConfigureLogging após executar uma chamada ao AddConsole:

// If the key exists in settings, use it to enable Application Insights.
string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
    b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
}

O código do método Main agora deve ser semelhante ao seguinte exemplo:

static async Task Main()
{
    var builder = new HostBuilder();
    //builder.UseEnvironment(EnvironmentName.Development);
    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddAzureStorageQueues();
    });
    builder.ConfigureLogging((context, b) =>
    {
        b.SetMinimumLevel(LogLevel.Error);
        b.AddFilter("Function", LogLevel.Information);
        b.AddFilter("Host", LogLevel.Debug);
        b.AddConsole();

        // If the key exists in settings, use it to enable Application Insights.
        string? instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
        if (!string.IsNullOrEmpty(instrumentationKey))
        {
            b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
        }
    });
    var host = builder.Build();
    using (host)
    {
        await host.RunAsync();
    }
}

Esse código inicializa o provedor de log do Application Insights com filtragem padrão. Quando o código é executado localmente, todas as informações e logs de nível superior são gravados no console e no Application Insights. Além disso, quando o código é executado localmente, o registro em log do Application Insights só tem suporte depois que você também adiciona APPINSIGHTS_INSTRUMENTATIONKEY ao arquivo appsetting.json no projeto.

Republicar o projeto e disparar a função novamente

  1. Em Solution Explorer, clique com o botão direito do mouse no projeto e selecione Publish.

  2. Como antes, use o portal Azure para criar uma mensagem de fila como você fez anteriormente, mas insira Hello App Insights! como o texto da mensagem.

  3. Na sua página de perfil Publish, selecione os três pontos acima de Hosting para mostrar as ações da seção de perfil Hosting e escolha Abrir no portal Azure.

  4. No aplicativo Web, em Configurações>Monitorar, escolha Application Insights e selecione Exibir dados do Application Insights.

  5. Selecione Pesquisar, depois clique em Conferir todos os dados das últimas 24 horas.

    Captura de tela mostrando como pesquisar e exibir dados do Application Insights.

  6. Se você não vir a mensagem Hello App Insights!, selecione Atualizar periodicamente por vários minutos. Os logs não serão exibidos de modo imediato porque o cliente do Application Insights demora um pouco para liberar os logs que ele processa.

    Captura de tela mostrando como exibir e atualizar seus logs no Application Insights.

Adicionar associações de entrada/saída

As associações simplificam o código que lê e grava dados. As associações de entrada simplificam o código que lê dados. As associações de saída simplificam o código que escreve dados.

Adicionar vinculações

As associações de entrada simplificam o código que lê dados. Neste exemplo, a mensagem da fila é o nome de um blob, que você usa para localizar e ler um blob no Azure Storage. Em seguida, você usa associações de saída para gravar uma cópia do arquivo no mesmo contêiner.

  1. Em Functions.cs, adicione um using:

    using System.IO;
    
  2. Substitua o ProcessQueueMessage método pelo seguinte código:

    public static void ProcessQueueMessage(
        [QueueTrigger("queue")] string message,
        [Blob("container/{queueTrigger}", FileAccess.Read)] Stream myBlob,
        [Blob("container/copy-{queueTrigger}", FileAccess.Write)] Stream outputBlob,
        ILogger logger)
    {
        logger.LogInformation($"Blob name:{message} \n Size: {myBlob.Length} bytes");
        myBlob.CopyTo(outputBlob);
    }
    

    Nesse código, queueTrigger é uma expressão de associação, o que significa que ele resolve para um valor diferente no runtime. No runtime, ele tem o conteúdo da mensagem da fila.

    Esse código usa associações de saída para criar uma cópia do arquivo identificado pela mensagem da fila. A cópia do arquivo tem o prefixo copy-.

  3. Em Program.cs, no método de extensão ConfigureWebJobs, adicione o método AddAzureStorageBlobs na instância HostBuilder (antes do comando Build) para inicializar a extensão do Armazenamento. Neste momento, o método ConfigureWebJobs será semelhante ao seguinte:

    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddAzureStorageQueues();
        b.AddAzureStorageBlobs();
    });
    
  4. Crie um contêiner de blob em sua conta de armazenamento.

    1. No portal Azure, navegue até a guia Containers abaixo do armazenamento Data e selecione + Contêiner

    2. Na caixa de diálogo Novo contêiner, digite contêiner como o nome do contêiner, e depois clique em Criar.

  5. Carregue o arquivo Program.cs no contêiner de blob. (Esse arquivo é usado aqui como um exemplo; você pode carregar qualquer arquivo de texto e criar uma mensagem da fila com o nome do arquivo.)

    1. Selecione o novo contêiner criado

    2. Selecione o botão Carregar .

      Captura de tela destacando o botão Carregar na tela do container de blob.

    3. Localize e selecione Program.cs e, em seguida, selecione OK.

Republicar o projeto

  1. Em Solution Explorer, clique com o botão direito do mouse no projeto e selecione Publish.

  2. Na caixa de diálogo Publicar, verifique se o perfil atual está selecionado, depois clique em Publicar. Os resultados da publicação são detalhados na janela Saída.

  3. Crie uma mensagem da fila na fila criada anteriormente, com Program.cs como o texto da mensagem.

    Captura de tela da caixa de diálogo Adicionar mensagem à fila mostrando o texto 'Program.cs' adicionado como texto da mensagem.

  4. Uma cópia do arquivo, copy-Program.cs, aparece no contêiner de blob.

Próximas etapas

Este tutorial mostrou de que modo criar, executar e implantar um projeto do SDK de WebJobs 3.x.