Utveckla och distribuera webbjobb med 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 Portal finns i Köra bakgrundsaktiviteter med webbjobb i Azure App Service.

Du kan välja att utveckla ett webbjobb som körs som antingen 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 antingen .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.

Webbjobb 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.

Anteckning

.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 för att Azure App Service från Visual Studio används samma verktyg som att publicera en ASP.NET Core app.

  1. I Solution Explorer högerklickar du på projektet och väljer Publicera.

  2. I dialogrutan Publicera väljer du Azure för Mål och 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 myResourceGroup Namnet på resursgruppen som funktionsappen ska skapas i. Skapa en ny resursgrupp genom att välja Ny.
    Värdplan 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 (kostnadsfritt, delat, 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 Service

  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 .

Webbjobb 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/kontinuerlig för kontinuerliga webbjobb och App_Data/jobb/utlöses för schemalagda eller webjobb på begäran).

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

Diagram som visar vad som läggs 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 WebJobs-aktiverat 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 webbjobbsprojekt som länkar till webbprojekt

Förutsättningar

Installera Visual Studio 2022 med Azure Development-arbetsbelastningen.

Aktivera WebJobs-distribution för ett befintligt konsolappprojekt

Du kan välja mellan 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ågon webbapp 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 WebJob visas med projektet markerat i rutan Projektnamn .

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

    Guiden Publicera webbplats visas. Om du inte vill publicera direkt stänger du 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 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ågon webbapp 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.

Anteckning

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 Nyttprojekt för fil>>. I dialogrutan Skapa ett nytt projekt söker du efter och väljer Azure WebJob (.NET Framework) för C#.

  2. Följ föregående anvisningar 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-webbjobb och välj sedan OK.

filen webjob-publish-settings.json

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 webjobs-projektet. 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önstret.

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-webbjobb

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

Dialogrutan Lägg till Azure-webbjobb

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

Dialogrutan Lägg till Azure-webbjobb

Några av fälten i den här dialogrutan motsvarar fält i dialogrutan Lägg till webbjobb i Azure Portal. 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 distribuera om, tar du bort filen webjobs-publish-settings.json . Detta gör att Visual Studio visar publiceringsalternativen på ett annat sätt, 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ämnar körningsläget på samma sätt eller växlar mellan Schemalagd och På begäran, uppdaterar Visual Studio det befintliga jobbet i stället för att skapa ett nytt.

Webbjobbstyper

Typen av ett webbjobb kan antingen utlösas eller vara 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å en enda instans som webbappen körs på.

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

Anteckning

En webbapp kan överskrida tidsgränsen efter 20 minuters inaktivitet och endast begäranden till den faktiska webbappen kan återställa timern. Om du visar appens konfiguration i Azure Portal eller gör begäranden till webbplatsen för avancerade verktyg (https://<app_name>.scm.azurewebsites.net) återställs inte timern. Om du anger att webbappen som är värd för jobbet ska köras kontinuerligt, köras enligt ett schema eller använda händelsedrivna utlösare aktiverar du inställningen Alltid på på webbappens Azure-konfigurationssida . Inställningen Alltid på hjälper till 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 Utlöses som standard och lägger till en ny settings.job-fil i projektet. För utlösta webbjobbstyper kan du använda den här filen för att ange ett körningsschema för ditt webbjobb.

Använd filen settings.job för att ange ett körningsschema för webbjobbet. 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 markerar du egenskaperna för filen settings.job i Visual Studio som Kopiera om det är nyare.

Om du skapar ett webbjobb från Azure Portal 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 Timerutlösare för Azure Functions.

Anteckning

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 din funktionsapp med namnet WEBSITE_TIME_ZONE. Mer information finns i NCRONTAB-tidszoner.

settings.job-referens

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

Inställning Typ Beskrivning
is_in_place Alla Tillåter att webbjobbet körs på plats utan att först kopieras till en tillfällig mapp. Mer information finns i Webbjobbsarbetskatalog.
is_singleton Kontinuerlig igenkänning Kör bara webbjobbet på en enda instans när det skalas ut. Mer information finns i Ange ett kontinuerligt jobb som singleton.
schedule Utlöste Kör webbjobbet enligt ett CRON-baserat schema. Mer information finns i NCRONTAB-uttryck.
stopping_wait_time Alla Tillåter kontroll över avstängningsbeteendet. Mer information finns i Respitfull avstängning.

Kontinuerlig körning

Om du aktiverar AlwaysOn 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. I Solution Explorer högerklickar du på projektet och väljer Publicera.

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

  4. I dialogrutan Profilinställningar väljer du Kontinuerligt för Webbjobbstyp och 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