System.Private.Uri:Azure関数で値をnullエラーにすることはできません

Aug 21 2020

Visual Studio CodeでC#Azure関数を作成しました。Visual Studio Codeで関数を実行すると、次のエラーが発生します。

[8/21/2020 1:27:34 AM] A host error has occurred during startup operation '803d7235-e81a-4768-a68d-15fcd93d8518'.
[8/21/2020 1:27:34 AM] System.Private.Uri: Value cannot be null. (Parameter 'uriString').
[8/21/2020 1:27:34 AM] Stopping JobHost
Value cannot be null. (Parameter 'provider')

どうすれば修正できますか?

回答

1 JayaChatterjee-MSFT Aug 26 2020 at 13:23

確認できることがいくつかあります。

  1. 接続エンドポイントを使用していて、アプリ設定から値を読み取っている場合。はいの場合、その設定の値を確認してください。
  2. この場合、有効なサービスバス接続エンドポイントを使用しているかどうかを確認してください。(もしあれば)

これらは問題ステートメントの非常に一般的な説明であり、詳細は提供されていません。関数の場合、接続文字列値がAzure Key Vaultから読み取られ、Azure関数構成のアプリ設定でこの値を設定し忘れると、このエラーが何度も発生します。このシナリオでは、AzureFunctionアプリケーションがKeyVaultから値を読み取ることができるように、KeyVault構成で作成されたアクセスポリシー。そのため、アクセスポリシーを再確認して、キーのアプリ設定値が有効な値であることを確認する必要があります。

1 Liam Oct 22 2020 at 17:34

これは一般的な問題のようで、Azureサービスがを使用して他のサービスに接続できない場合、Uriこのエラーが表示されます。呼び出しの前に、つまりで問題が発生した場合は、それを取得しているようですStartup.cs。したがってUri、呼び出すすべてのURL /接続文字列が正しいことを確認してください。

私にとって問題は私のスタートアップのこの行でした:

builder.AddSecretClient(new Uri(Environment.GetEnvironmentVariable("KeyVaultUrl")));

その環境変数はnullでした。

1 PeterMorris Oct 28 2020 at 17:30

私にとっての問題は、間違った接続文字列値をlocal.settings.json-ではなく-に貼り付け"EndPoint=...ていたことでした"\"Endpoint=...