Rozwiązywanie problemów w Harmonogramie Trwałych Zadań

Ten artykuł ułatwia rozwiązywanie problemów z typowymi scenariuszami w aplikacjach usługi Durable Task Scheduler. Znajdź swój scenariusz na poniższej liście i wykonaj połączone kroki, aby zdiagnozować i rozwiązać problem.

Typowe scenariusze

Uwaga / Notatka

Inżynierowie pomocy technicznej firmy Microsoft są dostępni, aby ułatwić diagnozowanie problemów z aplikacją. Jeśli nie możesz zdiagnozować problemu po przeczytaniu tego artykułu, możesz zgłosić zgłoszenie do pomocy technicznej, przechodząc do sekcji Help>Support + troubleshooting zasobu Durable Task Scheduler w portalu Azure.

Sprawdź łańcuch połączenia i dostęp do harmonogramu zadania Durable Task

Jeśli aplikacja nie jest uruchomiona zgodnie z oczekiwaniami, sprawdź następujące kwestie:

  • Format parametry połączenia jest poprawny.
  • Uwierzytelnianie jest poprawnie skonfigurowane.

Rozwój lokalny

  1. Sprawdź parametry połączenia, które powinny mieć następujący format: Endpoint=http://localhost:<port number>;Authentication=None. Upewnij się, że numer portu jest tym, który jest zamapowany na 8080 w kontenerze uruchamiającym emulator trwałego harmonogramu zadań.

  2. Wraz z trwałym emulatorem planowania zadań, sprawdź, czy emulator usługi Azure Storage, Azurite, został uruchomiony. Usługa Azurite jest wymagana w przypadku składników aplikacji związanych z usługą Functions.

Działanie na platformie Azure

  1. Sprawdź aplikację pod kątem zmiennych środowiskowych DURABLE_TASK_SCHEDULER_CONNECTION_STRING i TASKHUB_NAME.

  2. Sprawdź wartość atrybutu DURABLE_TASK_SCHEDULER_CONNECTION_STRING. W szczególności sprawdź, czy punkt końcowy harmonogramu i typ uwierzytelniania są poprawne. W przypadku korzystania z ciągu połączenia należy go sformatować w następujący sposób:

    • Tożsamość zarządzana przypisana przez użytkownika: Endpoint={scheduler endpoint};Authentication=ManagedIdentity;ClientID={client id}, gdzie client id jest identyfikatorem klienta tożsamości.
    • Tożsamość zarządzana przypisana przez system: Endpoint={scheduler endpoint};Authentication=ManagedIdentity
  3. Upewnij się, że wymagane uprawnienie kontroli dostępu opartej na rolach (RBAC) jest przyznawane tożsamości wymagającej dostępu do określonego centrum zadań lub harmonogramu.

  4. Jeśli jest używana tożsamość zarządzana przypisana przez użytkownika, upewnij się, że tożsamość jest przypisana do aplikacji.

Błąd podczas wdrażania aplikacji Durable Functions w Azure

Jeśli wdrożenie zakończy się niepowodzeniem z powodu błędu takiego jak Encountered an error (ServiceUnavailable) from host runtime z programu Visual Studio Code, najpierw sprawdź aplikację, aby upewnić się, że wymagane zmienne środowiskowe są poprawnie ustawione. Następnie ponownie wdróż aplikację. Jeśli wystąpi błąd podczas ładowania funkcji, wybierz przycisk Odśwież .

Nieznany błąd podczas pobierania szczegółów tego centrum zadań

Jeśli wystąpi Unknown error retrieving details of this task hub błąd na konsoli trwałego harmonogramu zadań, przyczyną może być:

  1. Twój identyfikator (e-mail) nie ma przypisanego wymaganego uprawnienia dla tego centrum zarządzania zadaniami. Postępuj zgodnie z instrukcjami, aby udzielić uprawnienia, a następnie ponownie uzyskaj dostęp do pulpitu nawigacyjnego.

  2. Centrum zadań zostało usunięte.

Nie można usunąć zasobu

Aby można było usunąć zasób harmonogramu, należy najpierw usunąć wszystkie jego centra zadań. Jeśli tak nie jest, zostanie wyświetlony następujący komunikat o błędzie:

{
  "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."
  }
}

Aby rozwiązać ten problem, wyświetl listę centrów zadań w harmonogramie i usuń je:

# 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

Po usunięciu wszystkich centrów zadań spróbuj ponownie usunąć zasób harmonogramu.

Nie można określić projektu do skompilowania

Jeśli po uruchomieniu Azurite wystąpi błąd: : “Can't determine Project to build. Expected 1 .csproj or .fsproj but found 2”

  • Usuń katalogi bin i obj w swojej aplikacji.
  • Spróbuj uruchomić func start ponownie.

Nie można odnaleźć natywnych plików binarnych dla ARM (Apple Silicon)

Gdy zobaczysz błędy gRPC związane z brakiem natywnych plików binarnych dla architektury ARM (na przykład na komputerze Mac z procesorem Apple Silicon — M1, M2 itp.), dodaj następujące obejście problemu do pliku extensions.csproj :

  1. Dodaj odwołanie do pakietu Contrib.Grpc.Core.M1.
  2. Dodaj niestandardowy element docelowy po kompilacji, który kopiuje biblioteki natywne ARM64 gRPC do poprawnego katalogu wyjściowego.

Dodaj następujące elementy ItemGroup i Target do 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>