Dela via


Utveckla och distribuera webbjobb med Hjälp av Visual Studio

Den här artikeln beskriver hur du använder Visual Studio för att distribuera ett konsolappprojekt till en webbapp i Azure App Service som ett Azure-webbjobb. Information om hur du distribuerar webbjobb med hjälp av Azure-portalen finns i Köra bakgrundsuppgifter med webbjobb i Azure App Service.

Du kan välja att utveckla ett webbjobb som körs som en .NET Core-app eller en .NET Framework-app. Med version 3.x av Azure WebJobs SDK kan du utveckla webbjobb som körs som .NET Core-appar eller .NET Framework-appar, medan version 2.x endast stöder .NET Framework. Hur du distribuerar ett WebJobs-projekt är annorlunda för .NET Core-projekt än för .NET Framework-projekt.

Du kan publicera flera webbjobb till en enda webbapp, förutsatt att varje webbjobb i en webbapp har ett unikt namn.

WebJobs som .NET Core-konsolappar

Med version 3.x av Azure WebJobs SDK kan du skapa och publicera webbjobb som .NET Core-konsolappar. Stegvisa instruktioner för att skapa och publicera en .NET Core-konsolapp till Azure som ett webbjobb finns i Komma igång med Azure WebJobs SDK för händelsedriven bakgrundsbearbetning.

Anmärkning

.NET Core Web Apps och/eller .NET Core WebJobs kan inte länkas till webbprojekt. Om du behöver distribuera ditt webbjobb med en webbapp skapar du dina webbjobb som en .NET Framework-konsolapp.

Distribuera till Azure App Service

När du publicerar ett .NET Core-webbjobb till Azure App Service från Visual Studio används samma verktyg som att publicera en ASP.NET Core-app.

  1. Högerklicka på projektet i Solution Exploreroch välj Publicera.

  2. I dialogrutan Publicera väljer du Azure för Mål och väljer sedan Nästa.

  3. Välj Azure WebJobs för Specifikt mål och välj sedan Nästa.

  4. Ovanför App Service-instanser väljer du plusknappen (+) för att skapa ett nytt Azure-webbjobb.

  5. I dialogrutan App Service (Windows) använder du värdinställningarna i följande tabell.

    Inställning Föreslaget värde Beskrivning
    Namn Globalt unikt namn Namn som unikt identifierar din nya funktionsapp.
    Prenumeration Välj din prenumeration Den Azure-prenumeration som ska användas.
    Resursgrupp minResursgrupp Namnet på resursgruppen som funktionsappen ska skapas i. Välj Ny för att skapa en ny resursgrupp.
    Hostingplan App Service-plan En App Service-plan anger plats, storlek och funktioner för webbservergruppen som är värd för din app. Du kan spara pengar när du är värd för flera appar genom att konfigurera webbapparna så att de delar en enda App Service-plan. App Service-planer definierar region, instansstorlek, skalningsantal och SKU (Kostnadsfri, Delad, Grundläggande, Standard eller Premium). Välj Ny för att skapa en ny App Service-plan. Kostnadsfria och grundläggande nivåer stöder inte alternativet AlwaysOn för att hålla webbplatsen igång kontinuerligt.

    Dialogrutan Skapa App-tjänst

  6. Välj Skapa för att skapa ett webbjobb och relaterade resurser i Azure med de här inställningarna och distribuera din projektkod.

  7. Välj Slutför för att återgå till sidan Publicera .

WebJobs som .NET Framework-konsolappar

Om du använder Visual Studio för att distribuera ett WebJobs-aktiverat .NET Framework-konsolappprojekt kopieras runtime-filer till lämplig mapp i webbappen (App_Data/jobb/kontinuerligt för kontinuerliga webbjobb och App_Data/jobb/utlösta för schemalagda eller webbjobb på begäran).

Visual Studio lägger till följande objekt i ett WebJobs-aktiverat projekt:

Diagram som visar vad som har lagts till i en konsolapp för att aktivera distribution som ett webbjobb

Du kan lägga till dessa objekt i ett befintligt konsolappprojekt eller använda en mall för att skapa ett nytt webbjobbsaktiverat konsolappprojekt.

Distribuera ett projekt som ett webbjobb självt eller länka det till ett webbprojekt så att det distribueras automatiskt när du distribuerar webbprojektet. För att länka projekt innehåller Visual Studio namnet på det WebJobs-aktiverade projektet i en webjobs-list.json fil i webbprojektet.

Diagram som visar webbjobbsprojektlänkning till webbprojekt

Förutsättningar

Installera Visual Studio 2022 med Azure-utvecklingsarbetsbelastningen.

Aktivera webjobs-distribution för ett befintligt konsolappprojekt

Du har två alternativ:

  • Aktivera automatisk distribution med ett webbprojekt.

    Konfigurera ett befintligt konsolappprojekt så att det distribueras automatiskt som ett webbjobb när du distribuerar ett webbprojekt. Använd det här alternativet när du vill köra ditt webbjobb i samma webbapp där du kör det relaterade webbprogrammet.

  • Aktivera distribution utan ett webbprojekt.

    Konfigurera ett befintligt konsolappprojekt så att det distribueras som ett webbjobb på egen hand, utan en länk till ett webbprojekt. Använd det här alternativet när du vill köra ett webbjobb i en webbapp på egen hand, utan att något webbprogram körs i webbappen. Du kanske vill göra det för att skala dina webbjobbsresurser oberoende av dina webbprogramresurser.

  1. Högerklicka på webbprojektet i Solution Explorer och välj sedan Lägg till>befintligt projekt som Azure-webbjobb.

    Befintligt projekt som Azure WebJob

    Dialogrutan Lägg till Azure-webbjobb visas.

  2. I listrutan Projektnamn väljer du konsolappprojektet som ska läggas till som ett webbjobb.

    Välja projekt i dialogrutan Lägg till Azure WebJob

  3. Slutför dialogrutan Lägg till Azure WebJob och välj sedan OK.

  1. Högerklicka på konsolappprojektet i Solution Explorer och välj sedan Publicera som Azure-webbjobb.

    Publicera som Azure WebJob

    Dialogrutan Lägg till Azure-webbjobb visas med projektet markerat i rutan Projektnamn .

  2. Slutför dialogrutan Lägg till Azure WebJob och välj sedan OK.

    Guiden Publicera webb visas. Om du inte vill publicera direkt kan du stänga guiden. De inställningar som du har angett sparas för när du vill distribuera projektet.

Skapa ett nytt WebJobs-aktiverat projekt

Om du vill skapa ett nytt WebJobs-aktiverat projekt använder du projektmallen för konsolappen och aktiverar webjobs-distribution enligt beskrivningen i föregående avsnitt. Alternativt kan du använda mallen WebJobs new-project:

  • Använda mallen WebJobs new-project för ett oberoende webbjobb

    Skapa ett projekt och konfigurera det så att det distribueras på egen hand som ett webbjobb, utan någon länk till ett webbprojekt. Använd det här alternativet när du vill köra ett webbjobb i en webbapp på egen hand, utan att något webbprogram körs i webbappen. Du kanske vill göra det för att skala dina webbjobbsresurser oberoende av dina webbprogramresurser.

  • Använda mallen WebJobs new-project för ett webbjobb som är länkat till ett webbprojekt

    Skapa ett projekt som är konfigurerat att distribueras automatiskt som ett webbjobb när du distribuerar ett webbprojekt i samma lösning. Använd det här alternativet när du vill köra ditt webbjobb i samma webbapp där du kör det relaterade webbprogrammet.

Anmärkning

Mallen WebJobs new-project installerar automatiskt NuGet-paket och innehåller kod i Program.cs för WebJobs SDK. Om du inte vill använda WebJobs SDK tar du bort eller ändrar instruktionen host.RunAndBlock i Program.cs.

  1. Välj Arkiv>Nytt>Projekt. I dialogrutan Skapa ett nytt projekt söker du efter och väljer Azure WebJob (.NET Framework) för C#.

  2. Följ de föregående anvisningarna för att göra konsolappprojektet till ett oberoende webjobs-projekt.

  1. Högerklicka på webbprojektet i Solution Explorer och välj sedan Lägg till>nytt Azure WebJob-projekt.

    Ny menypost för Azure WebJob Project

    Dialogrutan Lägg till Azure-webbjobb visas.

  2. Slutför dialogrutan Lägg till Azure WebJob och välj sedan OK.

webjob-publish-settings.json fil

När du konfigurerar en konsolapp för WebJobs-distribution installerar Visual Studio NuGet-paketet Microsoft.Web.WebJobs.Publish och lagrar schemaläggningsinformation i en webjob-publish-settings.json fil i mappen Egenskaper för projektet WebJobs. Här är ett exempel på filen:

{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "WebJob1",
  "startTime": "null",
  "endTime": "null",
  "jobRecurrenceFrequency": "null",
  "interval": null,
  "runMode": "Continuous"
}

Du kan redigera den här filen direkt och Visual Studio tillhandahåller IntelliSense. Filschemat lagras på https://schemastore.org och kan visas där.

webjobs-list.json fil

När du länkar ett WebJobs-aktiverat projekt till ett webbprojekt lagrar Visual Studio namnet på WebJobs-projektet i en webjobs-list.json fil i webbprojektets egenskapsmapp. Listan kan innehålla flera WebJobs-projekt, som du ser i följande exempel:

{
  "$schema": "http://schemastore.org/schemas/json/webjobs-list.json",
  "WebJobs": [
    {
      "filePath": "../ConsoleApplication1/ConsoleApplication1.csproj"
    },
    {
      "filePath": "../WebJob1/WebJob1.csproj"
    }
  ]
}

Du kan redigera den här filen direkt i Visual Studio med IntelliSense. Filschemat lagras på https://schemastore.org.

Distribuera ett WebJobs-projekt

Ett webbjobbsprojekt som du har länkat till ett webbprojekt distribueras automatiskt med webbprojektet. Information om distribution av webbprojekt finns i Guider> för attdistribuera appen i det vänstra navigeringsfältet.

Om du vill distribuera ett WebJobs-projekt på egen hand högerklickar du på projektet i Solution Explorer och väljer Publicera som Azure-webbjobb.

Publicera som Azure WebJob

För ett oberoende webbjobb visas samma publiceringswebbguide som används för webbprojekt, men med färre inställningar att ändra.

Dialogrutan Lägg till Azure WebJob

I dialogrutan Lägg till Azure-webbjobb kan du ange webbjobbets namn och inställningen körningsläge för ditt webbjobb.

Lägg till dialogrutan Azure WebJob

Några av fälten i den här dialogrutan motsvarar fält i dialogrutan Lägg till webbjobb i Azure-portalen. Mer information finns i Köra bakgrundsaktiviteter med webbjobb i Azure App Service.

Information om webbjobbsdistribution:

  • Information om kommandoradsdistribution finns i Aktivera kommandorads- eller kontinuerlig leverans av Azure WebJobs.

  • Om du distribuerar ett webbjobb och sedan bestämmer dig för att ändra typen av webbjobb och omdistribuera tar du bort webjobs-publish-settings.json-filen . Detta gör att Visual Studio kan redigera publiceringsalternativen igen, så att du kan ändra typen av webbjobb.

  • Om du distribuerar ett webbjobb och senare ändrar körningsläget från kontinuerlig till icke-kontinuerlig eller vice versa skapar Visual Studio ett nytt webbjobb i Azure när du distribuerar om. Om du ändrar andra schemaläggningsinställningar, men låter körningsläget vara detsamma eller växla mellan Schemalagd och På begäran, uppdaterar Visual Studio det befintliga jobbet i stället för att skapa ett nytt.

Typer av webbjobb

Typen av ett webbjobb kan antingen utlösas eller kontinuerlig:

  • Utlöst (standard): Ett utlöst webbjobb startar baserat på en bindningshändelse, enligt ett schema eller när du utlöser den manuellt (på begäran). Den körs på samma enda instans som webbappen är igång på.

  • Kontinuerlig: Ett kontinuerligt webbjobb startar omedelbart när webbjobbet skapas. Den körs på alla webbappskalade instanser som standard, men kan konfigureras för att köras som en enda instans via settings.job.

Anmärkning

En webbapp kan stängas av efter 20 minuters inaktivitet, och endast begäranden till själva webbappen kan starta om timern. Om du visar appens konfiguration i Azure-portalen eller skickar begäranden till webbplatsen för avancerade verktyg återställs inte timern. Om du anger att webbappen som är värd för ditt jobb ska köras kontinuerligt, köras enligt ett schema eller använda händelsedrivna utlösare aktiverar du inställningen Alltid på i webbappens Azure-konfigurationsfönster . Inställningen Always on hjälper dig att se till att den här typen av webbjobb körs på ett tillförlitligt sätt. Den här funktionen är endast tillgänglig på prisnivåerna Basic, Standard och Premium.

Schemalägga ett utlöst webbjobb

När du publicerar en konsolapp till Azure anger Visual Studio typen av webbjobb till Triggat som standard och lägger till filen settings.job i projektet. För triggade WebJob-typer kan du använda den här filen för att ange ett körningsschema för ditt WebJob.

Använd filen settings.job för att ange ett körningsschema för ditt webbjobb. Följande exempel körs varje timme från 09:00 till 17:00:

{
    "schedule": "0 0 9-17 * * *"
}

Den här filen finns i roten i mappen WebJobs med webbjobbets skript, till exempel wwwroot\app_data\jobs\triggered\{job name} eller wwwroot\app_data\jobs\continuous\{job name}. När du distribuerar ett webbjobb från Visual Studio, markera i Visual Studio filen settings.job och ange egenskaperna som Kopiera om det är nyare.

Om du skapar ett webbjobb från Azure-portalen skapas filen settings.job åt dig.

CRON-uttryck

WebJobs använder samma CRON-uttryck för schemaläggning som timerutlösaren i Azure Functions. Mer information om CRON-stöd finns i Timer-utlösare för Azure Functions.

Anmärkning

Standardtidszonen som används för att köra CRON-uttryck är Coordinated Universal Time (UTC). Om du vill att CRON-uttrycket ska köras baserat på en annan tidszon skapar du en appinställning för funktionsappen med namnet WEBSITE_TIME_ZONE. Mer information finns i NCRONTAB-tidszoner.

inställningar arbetsreferens

Följande inställningar stöds av WebJobs:

Inställning Typ Beskrivning
is_in_place Allt Tillåter att webbjobbet körs på plats utan att först kopieras till en tillfällig mapp. Mer information finns i Arbetskatalog för webbjobb.
is_singleton Kontinuerlig Kör bara webbjobbet på en enda instans när du skalar ut. Mer information finns i Ange ett kontinuerligt jobb som singleton.
schedule Utlöst Kör webbjobbet enligt ett CRON-baserat schema. Mer information finns i NCRONTAB-uttryck.
stopping_wait_time Allt Tillåter kontroll över avstängningsfunktionen. Mer information finns i Graciös avstängning.

Kontinuerlig körning

Om du aktiverar Always on i Azure kan du använda Visual Studio för att ändra webbjobbet så att det körs kontinuerligt:

  1. Om du inte redan har gjort det publicerar du projektet till Azure.

  2. Högerklicka på projektet i Solution Exploreroch välj Publicera.

  3. I avsnittet Inställningar väljer du Visa alla inställningar.

  4. I dialogrutan Profilinställningar väljer du Kontinuerlig för webbjobbstyp och väljer sedan Spara.

    Dialogrutan Publicera inställningar för ett webbjobb

  5. Välj Publicera på fliken Publicera för att publicera webbjobbet igen med de uppdaterade inställningarna.

Nästa steg