Fouten in Durable Task Scheduler oplossen

Dit artikel helpt u bij het oplossen van veelvoorkomende scenario's in Durable Task Scheduler-apps. Zoek uw scenario in de volgende lijst en volg de gekoppelde stappen om het probleem vast te stellen en op te lossen.

Algemene scenario's

Opmerking

Microsoft-ondersteuningstechnici zijn beschikbaar om problemen met uw toepassing te diagnosticeren. Als u uw probleem niet kunt vaststellen nadat u dit artikel hebt doorlopen, kunt u een ondersteuningsticket indienen door naar de sectie Help>Support + troubleshooting van de Durable Task Scheduler-resource in de Azure-portal te gaan.

Controleer de verbindingsreeks en toegang tot de Durable Task Scheduler

Wanneer uw app niet wordt uitgevoerd zoals verwacht, controleert u het volgende:

  • De verbindingsreeks-indeling is juist.
  • Authenticatie is correct ingesteld.

Lokale ontwikkeling

  1. Controleer de verbindingsreeks, die deze indeling moet hebben: Endpoint=http://localhost:<port number>;Authentication=None. Zorg ervoor dat het poortnummer het nummer is dat is toegewezen aan 8080 de container waarop de durable task scheduler-emulator wordt uitgevoerd.

  2. Zorg er samen met de durable task scheduler-emulator voor dat de Azure Storage-emulator, Azurite, is gestart. Azurite is nodig voor onderdelen van de app die betrekking hebben op Functions.

Wordt uitgevoerd op Azure

  1. Controleer uw app op de omgevingsvariabelen DURABLE_TASK_SCHEDULER_CONNECTION_STRING en TASKHUB_NAME.

  2. Controleer de waarde van DURABLE_TASK_SCHEDULER_CONNECTION_STRING. Controleer met name of het scheduler-eindpunt en het verificatietype juist zijn. De verbindingsreeks moet als volgt worden opgemaakt wanneer u het volgende gebruikt:

    • Door de gebruiker toegewezen beheerde identiteit: Endpoint={scheduler endpoint};Authentication=ManagedIdentity;ClientID={client id}, waar client id is de client-id van de identiteit.
    • Door het systeem toegewezen beheerde identiteit: Endpoint={scheduler endpoint};Authentication=ManagedIdentity
  3. Zorg ervoor dat de vereiste RBAC-machtiging (op rollen gebaseerd toegangsbeheer) wordt verleend aan de identiteit die toegang nodig heeft tot de opgegeven taakhub of scheduler.

  4. Als door de gebruiker toegewezen beheerde identiteit wordt gebruikt, controleert u of de identiteit is toegewezen aan uw app.

Fout bij het implementeren van Durable Functions app in Azure

Als uw implementatie mislukt met een fout zoals Encountered an error (ServiceUnavailable) from host runtime uit Visual Studio Code, controleert u eerst uw app om ervoor te zorgen dat de vereiste omgevingsvariabelen correct zijn ingesteld. Implementeer vervolgens uw app opnieuw. Als er een fout optreedt bij het laden van functies, selecteert u de knop Vernieuwen .

Onbekende fout bij het ophalen van details van deze taakhub

Als u een Unknown error retrieving details of this task hub fout krijgt op het dashboard van de durable task scheduler, kan dit de volgende reden zijn:

  1. Aan uw identiteit (e-mail) is niet de vereiste machtiging toegewezen voor die taakhub. Volg de instructies om de machtiging te verlenen en open het dashboard opnieuw.

  2. Uw taakhub is verwijderd.

Kan resource niet verwijderen

Voordat u een scheduler-resource kunt verwijderen, moet u eerst alle taakhubs verwijderen. Als u dat nog niet hebt gedaan, wordt het volgende foutbericht weergegeven:

{
  "error": {
    "code": "CannotDeleteResource",
    "message": "Cannot delete resource while nested resources exist. Some existing nested resource IDs include: 'Microsoft.DurableTask/schedulers/YOUR_SCHEDULER/taskhubs/YOUR_TASKHUB'. Please delete all nested resources before deleting this resource."
  }
}

U kunt dit oplossen door de taakhubs in de scheduler weer te geven en ze te verwijderen:

# List all task hubs in the scheduler
az durabletask taskhub list --resource-group RESOURCE_GROUP_NAME --scheduler-name SCHEDULER_NAME

# Delete each task hub
az durabletask taskhub delete --resource-group RESOURCE_GROUP_NAME --scheduler-name SCHEDULER_NAME --name TASKHUB_NAME

Nadat alle taakhubs zijn verwijderd, probeert u de scheduler-resource opnieuw te verwijderen.

Kan het project niet bepalen om te bouwen

Als u na het starten van Azurite de volgende fout tegenkomt: “Can't determine Project to build. Expected 1 .csproj or .fsproj but found 2”

  • Verwijder de bin - en obj-mappen in uw app.
  • Probeer func start opnieuw uit te voeren.

Kan geen systeemeigen binaire bestanden vinden voor ARM (Apple silicon)

Als u gRPC-fouten ziet met betrekking tot het niet vinden van systeemeigen binaire bestanden voor ARM (zoals op een Apple silicon Mac — M1, M2, enzovoort), voegt u de volgende tijdelijke oplossing toe aan uw extensions.csproj bestand:

  1. Voeg een pakketreferentie toe aan Contrib.Grpc.Core.M1.
  2. Voeg een aangepast na-builddoel toe waarmee de systeemeigen ARM64 gRPC-bibliotheken worden gekopieerd naar de juiste uitvoermap.

Voeg de volgende ItemGroup en Target elementen toe aan uw extensions.csproj:

<!-- Workaround for gRPC issues on ARM (Apple silicon) devices -->
<ItemGroup>
  <PackageReference Include="Contrib.Grpc.Core.M1" Version="2.41.0" />
</ItemGroup>
<Target Name="CopyGrpcNativeAssetsToOutDir" AfterTargets="Build">
  <ItemGroup>
    <NativeAssetToCopy Condition="$([MSBuild]::IsOSPlatform('OSX'))" Include="$(OutDir)runtimes/osx-arm64/native/*"/>
  </ItemGroup>
  <Copy SourceFiles="@(NativeAssetToCopy)" DestinationFolder="$(OutDir).azurefunctions/runtimes/osx-arm64/native"/>
</Target>