System.Private.Uri:Azure 函数的值不能为空错误

System.Private.Uri: Value cannot be null error with Azure Function

我在 Visual Studio 代码中创建了一个 C# Azure 函数。当我 运行 Visual Studio 代码中的函数时,出现以下错误:

[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. 如果我们正在使用任何连接端点并从应用程序设置中读取值。如果是,请检查该设置的值。
  2. 请确认我们在这种情况下是否使用了有效的服务总线连接端点。 (如果有的话)

这些是对问题陈述的非常笼统的解释,因为它没有提供更多细节。对于函数,我们多次看到此错误,因为如果连接字符串值是从 Azure Key Vault 读取的,而您错过了在 Azure 函数配置的应用程序设置中设置此值。在此方案中,在 Key Vault 配置中创建了一个访问策略,以便 Azure Function 应用程序可以从 Key Vault 中读取值。 因此您需要重新验证访问策略以确保键的应用设置值具有有效值。

这似乎是一个普遍问题,如果任何 azure 服务无法使用 Uri 连接到任何其他服务,您就会看到此错误。如果问题发生在调用之前,即在 Startup.cs 中,您似乎就明白了。因此,请检查所有 Uri 调用是否具有正确的 url/connection 字符串。

对我来说,问题是我启动时的这一行:

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

该环境变量为空。

对我来说,问题是我将错误的连接字符串值粘贴到 local.settings.json - 而不是 "EndPoint=... 我有 "\"Endpoint=...