Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt uitgelegd hoe u Visual Studio gebruikt om een console-app-project te implementeren in een web-app in Azure App Service als een Azure-webtaak. Zie Achtergrondtaken uitvoeren met WebJobs in Azure App Service voor meer informatie over het implementeren van WebJobs met behulp van Azure Portal.
U kunt ervoor kiezen om een webtaak te ontwikkelen die wordt uitgevoerd als een .NET Core-app of een .NET Framework-app. Met versie 3.x van de Azure WebJobs SDK kunt u WebJobs ontwikkelen die worden uitgevoerd als .NET Core-apps of .NET Framework-apps, terwijl versie 2.x alleen .NET Framework ondersteunt. De manier waarop u een WebJobs-project implementeert, verschilt voor .NET Core-projecten dan voor .NET Framework-projecten.
U kunt meerdere webtaken publiceren naar één web-app, mits elke webtaak in een web-app een unieke naam heeft.
WebJobs als .NET Core-console-apps
Met versie 3.x van de Azure WebJobs SDK kunt u WebJobs maken en publiceren als .NET Core-console-apps. Zie Aan de slag met de Azure WebJobs SDK voor gebeurtenisgestuurde achtergrondverwerking voor stapsgewijze instructies voor het maken en publiceren van een .NET Core-console-app naar Azure als webtaak.
Notitie
.NET Core Web Apps en/of .NET Core WebJobs kunnen niet worden gekoppeld aan webprojecten. Als u uw webtaak met een web-app wilt implementeren, maakt u uw WebJobs als een .NET Framework-console-app.
Implementeren in Azure App Service
Het publiceren van een .NET Core-webtaak naar Azure App Service vanuit Visual Studio maakt gebruik van dezelfde hulpprogramma's als het publiceren van een ASP.NET Core-app.
Klik in Solution Explorer-met de rechtermuisknop op het project en selecteer Publiceren.
In het dialoogvenster Publiceren, selecteer Azure voor Doel, en selecteer Volgende.
Selecteer Azure WebJobs voor een specifiek doel en selecteer vervolgens Volgende.
Selecteer boven App Service-exemplaren de plusknop (+) om een nieuwe Azure-webtaak te maken.
Gebruik in het dialoogvenster App Service (Windows) de hostinginstellingen in de volgende tabel.
Omgeving Voorgestelde waarde Beschrijving Naam Wereldwijd unieke naam Naam waarmee uw nieuwe functie-app uniek wordt aangeduid. Abonnement Kies uw abonnement Het te gebruiken Azure-abonnement. Resourcegroep myResourceGroup (mijnHulpbronnenGroep) De naam van de resourcegroep waarin uw functie-app moet worden gemaakt. Kies Nieuwe om een nieuwe resourcegroep te maken. Hostingplan App Service-plan Een App Service-plan geeft de locatie, de grootte en de functies van de webserverfarm aan die als host fungeert voor uw app. U kunt geld besparen bij het hosten van meerdere apps door de web-apps te configureren voor het delen van één App Service-plan. App Service-plannen definiëren de regio, de grootte van het exemplaar, het aantal schaalinstellingen en de SKU (Gratis, Gedeeld, Basic, Standard of Premium). Kies Nieuw om een nieuw App Service-plan te maken. Gratis en Basic-lagen bieden geen ondersteuning voor de optie AlwaysOn om uw site continu actief te houden. Selecteer Maken om een webtaak en gerelateerde resources in Azure te maken met deze instellingen en implementeer uw projectcode.
Selecteer Voltooien om terug te keren naar de pagina Publiceren .
WebJobs als .NET Framework-console-apps
Als u Visual Studio gebruikt om een .NET Framework-console-app-project met webtaken te implementeren, worden runtimebestanden gekopieerd naar de juiste map in de web-app (App_Data/jobs/doorlopend voor continue webtaken en App_Data/taken/geactiveerd voor geplande of on-demand webtaken).
Visual Studio voegt de volgende items toe aan een project dat WebJobs ondersteunt:
- Het NuGet-pakket Microsoft.WebJobs.Publish .
- Een webjob-publish-settings.json-bestand met implementatie- en scheduler-instellingen.
U kunt deze items toevoegen aan een bestaand console-app-project of een sjabloon gebruiken om een nieuw console-app-project met webtaken te maken.
Implementeer een project als een webtaak op zichzelf of koppel het aan een webproject, zodat het automatisch wordt geïmplementeerd wanneer u het webproject implementeert. Visual Studio voegt de naam van het door WebJobs ondersteunde project toe in een webjobs-list.json-bestand binnen het webproject om projecten te koppelen.
Vereiste voorwaarden
Installeer Visual Studio 2022 met de Azure-ontwikkelworkload.
WebJobs-implementatie inschakelen voor een bestaand console-app-project
U hebt twee opties:
Automatische implementatie met een webproject inschakelen.
Configureer een bestaand console-app-project zodat het automatisch wordt geïmplementeerd als een webtaak wanneer u een webproject implementeert. Gebruik deze optie als u uw webtaak wilt uitvoeren in dezelfde web-app waarin u de gerelateerde webtoepassing uitvoert.
Implementatie zonder een webproject inschakelen.
Configureer een bestaand console-app-project om zelf als een webtaak te implementeren, zonder een koppeling naar een webproject. Gebruik deze optie als u zelf een webtaak in een web-app wilt uitvoeren, zonder dat er een webtoepassing wordt uitgevoerd in de web-app. U kunt dit doen om uw WebJob-bronnen onafhankelijk van uw web-applicatiebronnen te schalen.
Automatische webtaakimplementatie met een webproject inschakelen
Klik met de rechtermuisknop op het webproject in Solution Explorer en selecteer Bestaand project toevoegen>als Azure-webtaak.
Het dialoogvenster Azure-webtaak toevoegen wordt weergegeven.
Selecteer in de vervolgkeuzelijst Projectnaam het console-app-project dat u wilt toevoegen als een webtaak.
Voltooi het dialoogvenster Azure-webtaak toevoegen en selecteer VERVOLGENS OK.
WebJobs-implementatie inschakelen zonder een webproject
Klik met de rechtermuisknop op het console-app-project in Solution Explorer en selecteer Publiceren als Azure WebJob.
Het dialoogvenster Azure WebJob toevoegen wordt weergegeven, waarbij het project is geselecteerd in het vak Projectnaam .
Voltooi het dialoogvenster Azure-webtaak toevoegen en selecteer VERVOLGENS OK.
De wizard Website publiceren verschijnt. Als u niet direct wilt publiceren, sluit u de wizard. De instellingen die u hebt ingevoerd, worden opgeslagen voor wanneer u het project wilt implementeren.
Een nieuw WebJobs-ondersteund project maken
Als u een nieuw webtaakproject wilt maken, gebruikt u de sjabloon voor het console-app-project en schakelt u webtakenimplementatie in, zoals wordt uitgelegd in de vorige sectie. Als alternatief kunt u de sjabloon WebJobs new-project gebruiken:
De sjabloon WebJobs new-project gebruiken voor een onafhankelijke webtaak
Maak een project en configureer het zodanig dat het wordt geïmplementeerd als een webtaak, zonder koppeling naar een webproject. Gebruik deze optie als u zelf een webtaak in een web-app wilt uitvoeren, zonder dat er een webtoepassing wordt uitgevoerd in de web-app. U kunt dit doen om uw WebJob-bronnen onafhankelijk van uw web-applicatiebronnen te schalen.
De sjabloon WebJobs new-project gebruiken voor een webtaak die is gekoppeld aan een webproject
Maak een project dat is geconfigureerd voor automatisch implementeren als een webtaak wanneer u een webproject in dezelfde oplossing implementeert. Gebruik deze optie als u uw webtaak wilt uitvoeren in dezelfde web-app waarin u de gerelateerde webtoepassing uitvoert.
Notitie
Met de sjabloon Nieuw-project voor WebJobs worden NuGet-pakketten automatisch geïnstalleerd en bevat code in Program.cs voor de WebJobs SDK. Als u de WebJobs SDK niet wilt gebruiken, verwijdert of wijzigt u de host.RunAndBlock
instructie in Program.cs.
De sjabloon WebJobs new-project gebruiken voor een onafhankelijke webtaak
Selecteer Bestand>Nieuw>Project. In het dialoogvenster Een nieuw project maken zoekt u naar en selecteert u Azure WebJob (.NET Framework) voor C#.
Volg de vorige aanwijzingen om het console-app-project een onafhankelijk WebJobs-project te maken.
De sjabloon WebJobs new-project gebruiken voor een webtaak die is gekoppeld aan een webproject
Klik met de rechtermuisknop op het webproject in Solution Explorer en selecteerNieuw Azure-webtaakproject>.
Het dialoogvenster Azure-webtaak toevoegen wordt weergegeven.
Voltooi het dialoogvenster Azure-webtaak toevoegen en selecteer VERVOLGENS OK.
webjob-publish-settings.json-bestand
Wanneer u een console-app configureert voor webtakenimplementatie, installeert Visual Studio het NuGet-pakket Microsoft.WebJobs.Publish en slaat u planningsgegevens op in een webjob-publish-settings.json-bestand in de map Projecteigenschappen van het WebJobs-project. Hier volgt een voorbeeld van dat bestand:
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "WebJob1",
"startTime": "null",
"endTime": "null",
"jobRecurrenceFrequency": "null",
"interval": null,
"runMode": "Continuous"
}
U kunt dit bestand rechtstreeks bewerken en Visual Studio biedt IntelliSense. Het bestandsschema wordt opgeslagen https://schemastore.org en kan daar worden weergegeven.
webjobs-list.json-bestand
Wanneer u een webtaakproject koppelt aan een webproject, slaat Visual Studio de naam van het webtaakproject op in een webjobs-list.json bestand in de map Eigenschappen van het webproject. De lijst kan meerdere WebJobs-projecten bevatten, zoals wordt weergegeven in het volgende voorbeeld:
{
"$schema": "http://schemastore.org/schemas/json/webjobs-list.json",
"WebJobs": [
{
"filePath": "../ConsoleApplication1/ConsoleApplication1.csproj"
},
{
"filePath": "../WebJob1/WebJob1.csproj"
}
]
}
U kunt dit bestand rechtstreeks in Visual Studio bewerken met IntelliSense. Het bestandsschema wordt opgeslagen op https://schemastore.org.
Een WebJobs-project implementeren
Een WebJobs-project dat u aan een webproject hebt gekoppeld, wordt automatisch geïmplementeerd met het webproject. Zie Instructies voor> hetimplementeren van de app in het linkernavigatievenster voor informatie over de implementatie van webprojects.
Als u zelf een WebJobs-project wilt implementeren, klikt u met de rechtermuisknop op het project in Solution Explorer en selecteert u Publiceren als Azure WebJob.
Voor een onafhankelijke webtaak wordt dezelfde wizard Web publiceren weergegeven die wordt gebruikt voor webprojecten, maar met minder instellingen die kunnen worden gewijzigd.
Dialoogvenster Azure WebJob toevoegen
In het dialoogvenster Azure WebJob toevoegen kunt u de naam van de webtaak en de instelling voor de uitvoeringsmodus voor uw webtaak invoeren.
Sommige velden in dit dialoogvenster komen overeen met velden in het dialoogvenster Webtaak toevoegen van Azure Portal. Zie Achtergrondtaken uitvoeren met WebJobs in Azure App Service voor meer informatie.
Informatie over webtaakimplementatie:
Zie Opdrachtregelimplementatie of Continue levering van Azure WebJobs inschakelen voor informatie over de implementatie van de opdrachtregel.
Als u een webtaak implementeert en vervolgens besluit u het type webtaak te wijzigen en opnieuw te implementeren, verwijdert u het webjobs-publish-settings.json bestand. Hierdoor worden de publicatieopties opnieuw weergegeven in Visual Studio, zodat u het type webtaak kunt wijzigen.
Als u een webtaak implementeert en later de uitvoeringsmodus wijzigt van doorlopend naar niet-doorlopend of omgekeerd, maakt Visual Studio een nieuwe webtaak in Azure wanneer u deze opnieuw implementeert. Als u andere planningsinstellingen wijzigt, maar de uitvoeringsmodus hetzelfde laat of schakelt tussen Gepland en On Demand, werkt Visual Studio de bestaande taak bij in plaats van een nieuwe taak te maken.
WebJob-typen
Het type webtaak kan getriggerd of continu zijn:
Geactiveerd (standaard): Een geactiveerde webtaak wordt gestart op basis van een bindingsgebeurtenis, volgens een planning of wanneer u deze handmatig activeert (op aanvraag). Deze wordt uitgevoerd op één exemplaar waarop de web-app wordt uitgevoerd.
Doorlopend: Er wordt onmiddellijk een doorlopende webtaak gestart wanneer de webtaak wordt gemaakt. Het wordt standaard uitgevoerd op alle geschaalde instanties van de webapp, maar kan worden geconfigureerd om als één enkele instantie te worden uitgevoerd via settings.job.
Notitie
Een web-app kan een time-out uitvoeren na 20 minuten inactiviteit en alleen aanvragen voor de werkelijke web-app kunnen de timer opnieuw instellen. Als u de configuratie van de app in Azure Portal bekijkt of aanvragen indient naar de site met geavanceerde hulpprogramma's, wordt de timer niet opnieuw ingesteld. Als u de web-app instelt die als host fungeert voor het continu uitvoeren van uw taak, wordt uitgevoerd volgens een schema of gebeurtenisgestuurde triggers gebruikt, schakelt u de instelling Altijd in in het deelvenster Azure-configuratie van uw web-app. Met de instelling AlwaysOn kunt u ervoor zorgen dat dit soort webtaken betrouwbaar worden uitgevoerd. Deze functie is alleen beschikbaar in de prijscategorieën Basic, Standard en Premium.
Een geactiveerde webtaak plannen
Wanneer u een console-app naar Azure publiceert, stelt Visual Studio het type webtaak standaard in op Geactiveerd en voegt u een nieuw bestand settings.job toe aan het project. Voor geactiveerde webtaaktypen kunt u dit bestand gebruiken om een uitvoeringsschema voor uw webtaak in te stellen.
Gebruik het bestand settings.job om een uitvoeringsschema voor uw webtaak in te stellen. In het volgende voorbeeld wordt elk uur van 9:00 tot 19:00 uur uitgevoerd:
{
"schedule": "0 0 9-17 * * *"
}
Dit bestand bevindt zich in de hoofdmap van de map WebJobs met het script van uw webtaak, zoals wwwroot\app_data\jobs\triggered\{job name}
of wwwroot\app_data\jobs\continuous\{job name}
. Wanneer u een webtaak vanuit Visual Studio implementeert, markeert u de eigenschappen van het bestand settings.job in Visual Studio als Kopiëren als nieuwer.
Als u een webtaak maakt vanuit Azure Portal, wordt het bestand settings.job voor u gemaakt.
CRON-expressies
WebJobs maakt gebruik van dezelfde CRON-expressies voor het plannen als de timertrigger in Azure Functions. Zie Timertrigger voor Azure Functions om meer te weten te komen over CRON-ondersteuning.
Notitie
De standaardtijdzone die wordt gebruikt om CRON-expressies uit te voeren, is Coordinated Universal Time (UTC). Als u wilt dat uw CRON-expressie wordt uitgevoerd op basis van een andere tijdzone, maakt u een app-instelling voor de functie-app met de naam WEBSITE_TIME_ZONE. Zie NCRONTAB-tijdzones voor meer informatie.
settings.job-referentie
De volgende instellingen worden ondersteund door WebJobs:
Omgeving | Typ | Beschrijving |
---|---|---|
is_in_place |
Alle | Hiermee kan de webtaak worden uitgevoerd zonder eerst naar een tijdelijke map te worden gekopieerd. Zie de werkmap WebJob voor meer informatie. |
is_singleton |
Doorlopend | Voer de webtaak alleen uit op één exemplaar wanneer deze wordt uitgeschaald. Zie Een doorlopende taak instellen als singleton voor meer informatie. |
schedule |
Geactiveerd | Voer de webtaak uit volgens een CRON-schema. Zie NCRONTAB-expressies voor meer informatie. |
stopping_wait_time |
Alle | Hiermee kunt u het afsluitgedrag controleren. Zie Graceful afsluiten voor meer informatie. |
Voortdurende uitvoering
Als u Always on inschakelt in Azure, kunt u Visual Studio gebruiken om de WebJob aan te passen zodat deze continu wordt uitgevoerd:
Als u dit nog niet hebt gedaan, publiceert u het project naar Azure.
Klik in Solution Explorer-met de rechtermuisknop op het project en selecteer Publiceren.
Kies Alle instellingen weergeven in de sectie Instellingen.
Kies Doorlopend voor webtaaktype in het dialoogvenster Profielinstellingen en kies Opslaan.
Selecteer Publiceren op het tabblad Publiceren om de webtaak opnieuw te publiceren met de bijgewerkte instellingen.