注
Microsoft サポート エンジニアは、アプリケーションに関する問題の診断に役立ちます。 この記事を読んだ後に問題を診断できない場合は、Azure portal の永続的なタスク スケジューラ リソースの ヘルプ>Support + トラブルシューティング のセクションに移動して、サポート チケットを提出できます。
接続文字列と永続的タスク スケジューラへのアクセスを確認する
アプリが想定どおりに実行されていない場合は、最初に次の項目があるかどうかを確認します。
- 正しい接続文字列の形式。
- 認証が正しく設定されている。
ローカル開発
接続文字列を確認します。この形式は
Endpoint=http://localhost:<port number>;Authentication=None
です。8080
コンテナー内で、ポート番号がにマップされていることを確認します。永続的なタスク スケジューラ エミュレーターと共 に、Azure Storage エミュレーター Azurite が起動していることを確認します。 Azurite は、Functions に関連するアプリのコンポーネントに必要です。
Azure での実行
アプリで環境変数の
DURABLE_TASK_SCHEDULER_CONNECTION_STRING
とTASKHUB_NAME
を確認します。DURABLE_TASK_SCHEDULER_CONNECTION_STRING
の値を確認します。 具体的には、スケジューラ エンドポイントと認証の種類が正しいことを確認します。 接続文字列を使用する場合は、次のように書式設定する必要があります。-
ユーザー割り当てマネージド ID:
Endpoint={scheduler endpoint};Authentication=ManagedIdentity;ClientID={client id}
。ここで、client id
は ID のクライアント ID です。 -
システム割り当てマネージド ID:
Endpoint={scheduler endpoint};Authentication=ManagedIdentity
-
ユーザー割り当てマネージド ID:
指定したタスク ハブまたはスケジューラにアクセスするために必要な ID に、 必要なロールベースのアクセス制御 (RBAC) アクセス許可が付与されていることを確認します。
- ダッシュボードにアクセスするときは、アクセス許可が 自分の ID (電子メール) に割り当てられていることを確認します。
ユーザー割り当てマネージド ID が使用されている場合は、 その ID がアプリに割り当てられていることを確認します。
Durable Functions アプリを Azure にデプロイ中にエラーが発生しました
Visual Studio Code からの Encountered an error (ServiceUnavailable) from host runtime
などのエラーでデプロイが失敗した場合は、まずアプリを調べて、必要な 環境変数 が正しく設定されていることを確認します。 次に、アプリを再デプロイします。 関数の読み込み中にエラーが発生した場合は、[最新の情報に更新] ボタンをクリックします。
このタスク ハブの詳細を取得中の不明なエラー
非消耗品タスク スケジューラ ダッシュボードで Unknown error retrieving details of this task hub
エラーが発生した場合、その理由は次のようになります。
ID (電子メール) には、そのタスク ハブに必要なアクセス許可が割り当てられません。 手順に従って アクセス許可を付与し、ダッシュボードに再度アクセスします。
タスク ハブが削除されました。
リソースを削除できません
永続的なタスク スケジューラ環境のすべてのタスク ハブを必ず削除してください。 表示されていない場合は、次のエラー メッセージが表示されます。
{
"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."
}
}
ビルドするプロジェクトを特定できない
Azurite を起動した後、次のエラーが発生した場合: “Can't determine Project to build. Expected 1 .csproj or .fsproj but found 2”
:
- アプリ内の bin ディレクトリと obj ディレクトリを削除します。
-
func start
をもう一度実行してみてください。
ARM のネイティブ バイナリが見つかりません
ARM (Mx Mac など) のネイティブ バイナリが見つからない場合に関連する gRPC エラーが表示される場合は、 extensions.csproj
ファイルの末尾に次の回避策を追加する必要があります。
<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>
gRPC ランタイムの問題の発生
Mx Mac (ARM64) ユーザーの場合、Durable Functions を使用した場合に gRPC ランタイムの問題が発生する可能性があります。 回避策として:
2.41.0
NuGet パッケージのContrib.Grpc.Core.M1
バージョンを参照します。適切な ARM64 バージョンの gRPC ライブラリが確実に見つかるカスタム のビルド後ターゲットを追加します。
<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>