Share via


Problemen met de durable task scheduler van Azure Functions oplossen (preview)

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-ondersteuning>en probleemoplossing van de resource duurzame taakplanner in Azure Portal te gaan.

Verbindingsreeks en toegang tot duurzame taakplanner controleren

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

  • De juiste verbindingsreeksindeling.
  • Verificatie juist 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 in 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 de Durable Functions-app in Azure

Als uw implementatie mislukt met een fout zoals Encountered an error (ServiceUnavailable) from host runtime 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, klikt u op 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

Zorg ervoor dat u alle taakhubs in de durable task scheduler-omgeving verwijdert. 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."
  }
}

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

Als u gRPC-fouten ziet met betrekking tot het niet vinden van systeemeigen binaire bestanden voor ARM (zoals op een Mx Mac), moet u mogelijk de volgende tijdelijke oplossing toevoegen aan het einde van het extensions.csproj bestand.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <WarningsAsErrors></WarningsAsErrors>
    <DefaultItemExcludes>**</DefaultItemExcludes>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.13.7" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask.AzureManaged" Version="0.3.0-alpha" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator" Version="1.1.3" />
  </ItemGroup>
  <!-- Add the below groups/targets to workaround gRPC issues on ARM 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>
</Project>

Problemen met gRPC-runtime

Voor gebruikers van Mx Mac (ARM64) kunt u runtime-problemen ondervinden met gRPC bij het gebruik van duurzame functies. Als tijdelijke oplossing:

  1. Verwijs naar de 2.41.0 versie van het Contrib.Grpc.Core.M1 NuGet-pakket.

  2. Voeg een aangepast nabouwdoel toe dat ervoor zorgt dat de juiste ARM64-versie van de gRPC-bibliotheken kan worden gevonden.

    <Project>
      <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>
    </Project>