Freigeben über


Entwickeln und Bereitstellen von WebJobs mit Visual Studio

In diesem Artikel wird erläutert, wie Sie Visual Studio verwenden, um ein Konsolen-App-Projekt in einer Web-App in Azure App Service als Azure WebJob bereitzustellen. Informationen zum Bereitstellen von WebJobs über das Azure-Portal finden Sie unter Ausführen von Hintergrundaufgaben mit WebJobs in Azure App Service.

Sie können einen WebJob entwickeln, der entweder als .NET Core-App oder als .NET Framework-App ausgeführt wird. Mit Version 3.x des Azure WebJobs SDK können Sie WebJobs entwickeln, die entweder als .NET Core-Apps oder als .NET Framework-Apps ausgeführt werden, während Version 2.x nur .NET Framework unterstützt. Die Art und Weise, wie Sie ein WebJobs-Projekt bereitstellen, unterscheidet sich für .NET Core-Projekte von der für .NET Framework-Projekte.

Sie können mehrere WebJobs in einer einzelnen Web-App veröffentlichen, vorausgesetzt, dass jeder WebJob in einer Web-App einen eindeutigen Namen hat.

WebJobs als .NET Core-Konsolen-Apps

Mit Version 3.x des Azure WebJobs SDK können Sie WebJobs als .NET Core-Konsolen-Apps erstellen und veröffentlichen. Eine Schritt-für-Schritt-Anleitung zum Erstellen und Veröffentlichen einer .NET Core-Konsolen-App in Azure als WebJob finden Sie unter Erste Schritte mit dem Azure WebJobs SDK für die ereignisgesteuerte Hintergrundverarbeitung.

Hinweis

.NET Core-Web-Apps und/oder .NET Core-WebJobs können nicht mit Webprojekten verknüpft werden. Wenn Sie Ihren WebJob mit einer Web-App bereitstellen müssen, erstellen Sie Ihre WebJobs als .NET Framework-Konsolen-App.

Bereitstellung auf Azure App Service

Für das Veröffentlichen eines .NET Core-Webauftrags in Azure App Service aus Visual Studio werden dieselben Tools verwendet wie für das Veröffentlichen einer ASP.NET Core-App.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen aus.

  2. Klicken Sie im Dialogfeld Veröffentlichen unter Ziel erst auf Azure und dann auf Weiter.

  3. Wählen Sie Azure WebJobs als Bestimmtes Ziel aus, und klicken Sie dann auf Weiter.

  4. Wählen Sie über den App Service Instanzen die Taste mit dem Pluszeichen ( + ) aus, um einen neuen Azure WebJob zu erstellen.

  5. Verwenden Sie im Dialogfeld App Service (Windows) die Hostingeinstellungen aus der folgenden Tabelle.

    Konfiguration Vorgeschlagener Wert BESCHREIBUNG
    Name Global eindeutiger Name Name, der Ihre neue Funktions-App eindeutig identifiziert.
    Abonnement Wählen Sie Ihr Abonnement aus Das zu verwendende Azure-Abonnement.
    Ressourcengruppe meineRessourcengruppe Der Name der Ressourcengruppe, in der Ihre Funktions-App erstellt werden soll. Wählen Sie "Neu" aus, um eine neue Ressourcengruppe zu erstellen.
    Hostingplan App Service-Plan Ein App Service-Plan gibt den Standort, die Größe und die Funktionen der Webserverfarm an, die Ihre App hostet. Beim Hosten mehrerer Apps können Sie Geld sparen, indem Sie die Web-Apps für die gemeinsame Verwendung eines einzelnen App Service-Plans konfigurieren. App Service-Pläne definieren Region, Instanzgröße, Skalierung und SKU (Free, Shared, Basic, Standard oder Premium). Wählen Sie New aus, um einen neuen App Service-Plan zu erstellen. Die kostenlosen und einfachen Ebenen unterstützen die Option „Always On“ nicht, damit Ihre Website kontinuierlich ausgeführt wird.

    Dialogfeld „App Service erstellen“

  6. Klicken Sie auf Erstellen, um eine WebJob-Instanz und zugehörige Ressourcen in Azure mit diesen Einstellungen zu erstellen und Ihren Projektcode bereitzustellen.

  7. Wählen Sie Fertig stellen aus, um zur Seite Veröffentlichen zurückzukehren.

WebJobs als .NET Framework-Konsolen-Apps

Wenn Sie Visual Studio verwenden, um ein WebJobs-fähiges .NET Framework-Konsolen-App-Projekt bereitzustellen, werden Laufzeitdateien in den entsprechenden Ordner in der Web-App kopiert (App_Data/jobs/continuous für fortlaufende WebJobs und App_Data/jobs/triggered für geplante oder bedarfsgesteuerte WebJobs).

Visual Studio fügt einem WebJobs-fähigen Projekt die folgenden Elemente hinzu:

Diagramm, das zeigt, was einer Konsolen-App hinzugefügt wird, um die Bereitstellung als WebJob zu ermöglichen

Sie können diese Elemente einem vorhandenen Konsolen-App-Projekt hinzufügen oder eine Vorlage verwenden, um ein neues WebJobs-fähiges Konsolen-App-Projekt zu erstellen.

Stellen Sie ein Projekt als eigenständigen WebJob bereit, oder verknüpfen Sie es mit einem Webprojekt, sodass es automatisch bereitgestellt wird, wenn Sie das Webprojekt bereitstellen. Zum Verknüpfen von Projekten fügt Visual Studio den Namen des WebJobs-fähigen Projekts in eine webjobs-list.json Datei im Webprojekt ein.

Diagramm, das die Verknüpfung des WebJob-Projekts mit dem Web-Projekt zeigt

Voraussetzungen

Installieren Sie Visual Studio 2022 mit der Azure-Entwicklungsworkload.

Aktivieren der WebJobs-Bereitstellung für ein vorhandenes Konsolen-App-Projekt

Sie haben zwei Möglichkeiten:

  • Aktivieren Sie die automatische Bereitstellung mit einem Webprojekt.

    Konfigurieren Sie ein vorhandenes Konsolen-App-Projekt so, dass es beim Bereitstellen eines Webprojekts automatisch als WebJob bereitgestellt wird. Verwenden Sie diese Option, wenn Sie Ihren WebJob in derselben Web-App ausführen möchten, in der Sie die zugehörige Webanwendung ausführen.

  • Ermöglichen Sie die Bereitstellung ohne Webprojekt.

    Konfigurieren Sie ein vorhandenes Konsolen-App-Projekt so, dass es als eigenständiger WebJob ohne Verknüpfung mit einem Webprojekt bereitgestellt wird. Verwenden Sie diese Option, wenn Sie einen WebJob in einer Web-App allein ausführen möchten, ohne dass eine Webanwendung in der Web-App ausgeführt wird. Möglicherweise möchten Sie dies tun, um Ihre WebJob-Ressourcen unabhängig von Ihren Webanwendungsressourcen zu skalieren.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Webprojekt, und wählen Siedann Vorhandenes Projekt als Azure-Webauftrag> aus.

    Vorhandenes Projekt als Azure WebJob

    Das Dialogfeld Azure WebJob hinzufügen wird angezeigt.

  2. Wählen Sie in der Dropdownliste Projektname das Konsolen-App-Projekt aus, das als WebJob hinzugefügt werden soll.

    Auswählen des Projekts im Dialogfeld

  3. Füllen Sie das Dialogfeld Azure WebJob hinzufügen aus , und wählen Sie dann OK aus.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Konsolen-App-Projekt, und wählen Sie dann Als Azure WebJob veröffentlichen aus.

    Veröffentlichen als Azure WebJob

    Das Dialogfeld Azure WebJob hinzufügen wird angezeigt, und das Projekt wird im Feld Projektname ausgewählt.

  2. Füllen Sie das Dialogfeld Azure WebJob hinzufügen aus , und wählen Sie dann OK aus.

    Der Assistent "Web veröffentlichen " wird angezeigt. Wenn Sie nicht sofort veröffentlichen möchten, schließen Sie den Assistenten. Die Einstellungen, die Sie eingegeben haben, werden gespeichert, wenn Sie das Projekt bereitstellen möchten.

Erstellen eines neuen WebJobs-fähigen Projekts

Um ein neues WebJobs-fähiges Projekt zu erstellen, verwenden Sie die Konsolen-App-Projektvorlage, und aktivieren Sie die WebJobs-Bereitstellung, wie im vorherigen Abschnitt erläutert. Alternativ können Sie die WebJobs-Vorlage für neues Projekt verwenden:

Hinweis

Die WebJobs-Vorlage für neue Projekte installiert automatisch NuGet-Pakete und enthält Code in Program.cs für das WebJobs SDK. Wenn Sie das WebJobs SDK nicht verwenden möchten, entfernen oder ändern Sie die host.RunAndBlock Anweisung in Program.cs.

  1. Wählen Sie Datei>Neu>Projekt aus. Suchen Sie im Dialogfeld Neues Projekt erstellen nach Azure WebJob (.NET Framework) für C#, und wählen Sie es aus.

  2. Befolgen Sie die vorherigen Anweisungen, um das Konsolen-App-Projekt zu einem unabhängigen WebJobs-Projekt zu machen.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Webprojekt, und wählen Siedann Neues Azure WebJob-Projekt> aus.

    Neuer Menüeintrag Azure WebJob Projekt

    Das Dialogfeld Azure WebJob hinzufügen wird angezeigt.

  2. Füllen Sie das Dialogfeld Azure WebJob hinzufügen aus , und wählen Sie dann OK aus.

Datei webjob-publish-settings.json

Wenn Sie eine Konsolen-App für die WebJobs-Bereitstellung konfigurieren, installiert Visual Studio das NuGet-Paket Microsoft.Web.WebJobs.Publish und speichert die Planungsinformationen in einerwebjob-publish-settings.jsonDatei im Eigenschaftenordner des Projekts des WebJobs-Projekts. Hier ist ein Beispiel für diese Datei:

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

Sie können diese Datei direkt bearbeiten, und Visual Studio stellt IntelliSense bereit. Das Dateischema wird unter https://schemastore.org gespeichert und kann dort eingesehen werden.

Datei webjobs-list.json

Wenn Sie ein WebJobs-fähiges Projekt mit einem Webprojekt verknüpfen, speichert Visual Studio den Namen des WebJobs-Projekts in einerwebjobs-list.jsonDatei im Eigenschaftenordner des Webprojekts. Die Liste kann mehrere WebJobs-Projekte enthalten, wie im folgenden Beispiel gezeigt:

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

Sie können diese Datei direkt in Visual Studio mit IntelliSense bearbeiten. Das Dateischema wird unter https://schemastore.orggespeichert.

Bereitstellen eines WebJobs-Projekts

Ein WebJobs-Projekt, das Sie mit einem Webprojekt verknüpft haben, wird automatisch mit dem Webprojekt bereitgestellt. Informationen zur Bereitstellung von Webprojekten finden Sie unter Anleitungen>Bereitstellen der App im linken Navigationsbereich.

Wenn Sie ein WebJobs-Projekt selbst bereitstellen möchten, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Als Azure WebJob veröffentlichen aus.

Veröffentlichen als Azure WebJob

Für einen unabhängigen WebJob wird derselbe Assistent zum Veröffentlichen von Webs angezeigt, der auch für Webprojekte verwendet wird, jedoch mit weniger Einstellungen, die geändert werden können.

Dialogfeld "Azure WebJob hinzufügen"

Im Dialogfeld Azure WebJob hinzufügen können Sie den WebJob-Namen und die Einstellung für den Ausführungsmodus für Ihren WebJob eingeben.

Dialogfeld

Einige der Felder in diesem Dialogfeld entsprechen den Feldern im Dialogfeld WebJob hinzufügen des Azure-Portals. Weitere Informationen finden Sie unter Ausführen von Hintergrundaufgaben mit WebJobs in Azure App Service.

Informationen zur WebJob-Bereitstellung:

  • Informationen zur Befehlszeilenbereitstellung finden Sie unter Aktivieren der Befehlszeilen- oder Continuous Delivery von Azure WebJobs.

  • Wenn Sie einen WebJob bereitstellen und dann entscheiden, den Typ des WebJobs zu ändern und erneut bereitzustellen, löschen Sie die webjobs-publish-settings.json Datei. Dadurch werden die Veröffentlichungsoptionen in Visual Studio erneut angezeigt, sodass Sie den Typ von WebJob ändern können.

  • Wenn Sie einen WebJob bereitstellen und später den Ausführungsmodus von kontinuierlich in nicht kontinuierlich oder umgekehrt ändern, erstellt Visual Studio bei der erneuten Bereitstellung einen neuen WebJob in Azure. Wenn Sie andere Planungseinstellungen ändern, aber den Ausführungsmodus unverändert lassen oder zwischen Geplant und Bei Bedarf wechseln, aktualisiert Visual Studio den vorhandenen Auftrag, anstatt einen neuen zu erstellen.

WebJob-Typen

Der Typ eines WebJobs kann entweder ausgelöst oder kontinuierlich sein:

  • Ausgelöst (Standard): Ein ausgelöster WebJob wird basierend auf einem Bindungsereignis, nach einem Zeitplan oder wenn Sie ihn manuell (bei Bedarf) auslösen. Sie wird auf einer einzelnen Instanz ausgeführt, auf der die Web-App ausgeführt wird.

  • Fortlaufend: Ein fortlaufender WebJob wird sofort gestartet, wenn der WebJob erstellt wird. Sie wird standardmäßig auf allen skalierten Web-App-Instanzen ausgeführt, kann aber über settings.job so konfiguriert werden, dass sie als einzelne Instanz ausgeführt wird.

Hinweis

Für eine Web-App kann nach 20 Minuten Inaktivität ein Timeout auftreten, und dieser Zeitgeber kann nur durch Anforderungen an die tatsächliche Web-App zurückgesetzt werden. Das Anzeigen der App-Konfiguration im Azure-Portal oder das Senden von Anforderungen an die Website für erweiterte Tools setzt den Timer nicht zurück. Wenn Sie die Web-App festlegen, die Ihren Auftrag für die kontinuierliche Ausführung hostet, sie nach einem Zeitplan ausführen oder ereignisgesteuerte Trigger verwenden, aktivieren Sie die Einstellung "Immer aktivieren" im Azure-Konfigurationsbereich Ihrer Web-App. Die Einstellung "Immer aktiviert " hilft sicherzustellen, dass diese Arten von WebJobs zuverlässig ausgeführt werden. Dieses Feature steht nur in den Tarifen „Basic“, „Standard“ und „Premium“ zur Verfügung.

Planen eines ausgelösten WebJobs

Wenn Sie eine Konsolen-App in Azure veröffentlichen, legt Visual Studio den Typ von WebJob standardmäßig auf Triggered fest und fügt dem Projekt eine neue settings.job-Datei hinzu. Für ausgelöste WebJob-Typen können Sie diese Datei verwenden, um einen Ausführungszeitplan für Ihren WebJob festzulegen.

Verwenden Sie die Datei settings.job , um einen Ausführungszeitplan für Ihren WebJob festzulegen. Das folgende Beispiel wird stündlich von 9 bis 17 Uhr ausgeführt:

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

Diese Datei befindet sich im Stammverzeichnis des WebJobs-Ordners mit dem Skript Ihres WebJobs, z. B wwwroot\app_data\jobs\triggered\{job name} . oder wwwroot\app_data\jobs\continuous\{job name}. Wenn Sie einen WebJob aus Visual Studio bereitstellen, markieren Sie die Eigenschaften der Datei settings.job in Visual Studio als Kopieren, wenn neuer.

Wenn Sie einen WebJob über das Azure-Portal erstellen, wird die Datei settings.job für Sie erstellt.

CRON-Ausdrücke

WebJobs verwendet für die Planung die gleichen CRON-Ausdrücke wie der Timertrigger in Azure Functions. Weitere Informationen zur CRON-Unterstützung finden Sie unter Timertrigger für Azure Functions.

Hinweis

Die Standardzeitzone, die für die Ausführung von CRON-Ausdrücken verwendet wird, ist Coordinated Universal Time (UTC). Wenn Sie möchten, dass Ihr CRON-Ausdruck gemäß einer anderen Zeitzone ausgeführt wird, erstellen Sie eine App-Einstellung für Ihre Funktions-App mit dem Namen WEBSITE_TIME_ZONE. Weitere Informationen finden Sie unter NCRONTAB-Zeitzonen.

settings.Job-Referenz

Die folgenden Einstellungen werden von WebJobs unterstützt:

Einstellung Typ Beschreibung
is_in_place Alle Ermöglicht die direkte Ausführung des WebAuftrags, ohne dass er zuerst in einen temporären Ordner kopiert werden muss. Weitere Informationen finden Sie unter WebJob-Arbeitsverzeichnis.
is_singleton Stetig Führen Sie den WebJob nur auf einer einzelnen Instanz aus, wenn er horizontal hochskaliert wird. Weitere Informationen finden Sie unter Festlegen eines fortlaufenden Auftrags als Singleton.
schedule Ausgelöst Führen Sie den WebJob nach einem CRON-basierten Zeitplan aus. Weitere Informationen finden Sie unter NCRONTAB-Ausdrücke.
stopping_wait_time Alle Ermöglicht die Steuerung des Abschaltverhaltens. Weitere Informationen finden Sie unter Sanftes Herunterfahren.

Kontinuierliche Ausführung

Wenn Sie Always On in Azure aktivieren, können Sie Visual Studio verwenden, um den WebJob so zu ändern, dass er kontinuierlich ausgeführt wird:

  1. Wenn Sie dies noch nicht getan haben, veröffentlichen Sie das Projekt in Azure.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen aus.

  3. Wählen Sie im Abschnitt Settings (Einstellungen ) die Option Show all settings (Alle Einstellungen anzeigen) aus.

  4. Wählen Sie im Dialogfeld Profileinstellungen die Option Fortlaufend für WebJob-Typ aus, und wählen Sie dann Speichern aus.

    Dialogfeld

  5. Wählen Sie auf der Registerkarte Veröffentlichen die Option Veröffentlichen aus, um den WebJob mit den aktualisierten Einstellungen erneut zu veröffentlichen.

Nächste Schritte