值不能为空。参数名称:uriString

9 asp.net azure-cosmosdb

我最近通过以下链接在 Visual Studio 2015 中创建了一个应用程序:https : //azure.microsoft.com/en-in/documentation/articles/documentdb-dotnet-application/

但是当我构建解决方案时,它显示了以下错误:

值不能是null
参数名称:uriString
第71行:public static void Initialize()
第72行:{
第73行:client = new DocumentClient(new Uri(ConfigurationManager.AppSettings["https://<db-name>.documents.azure.com:443/"]), ConfigurationManager.AppSettings["<db-key>"]);
第74行:CreateDatabaseIfNotExistsAsync().Wait();
第75行:CreateCollectionIfNotExistsAsync().Wait();

源文件:C:\Users\BHAVIN PATEL\Documents\Visual Studio 2015\Projects\documentdb-dotnet-todo-app-master\src\DocumentDBRepository.cs 行:73

我已Web.config在 Azure 中创建的 DocumentDB 应用程序的应用程序文件中插入了 URI 和主键/辅助键。

Sib*_*enu 5

当我运行我的Azure Function.

在此输入图像描述

我正在读取其中一个连接字符串值,Azure Key Vault并且已在 Azure Function 配置的应用程序设置中设置了该值。根据Microsoft 文档,必须使用创建的托管标识对象Managed Identity为 Azure Function 设置并Access Policy在 Key Vault 配置中创建,以便 Azure Function 应用程序可以从 Key Vault 读取值。

我缺少此设置,因此该键的应用程序设置值ServiceBusConnectionString始终为空,因此出现上述错误。配置访问策略后,错误消失。希望能帮助到你。

在此输入图像描述


hsu*_*sen 4

您的问题是数据库端点和密钥应该位于 .config 文件中,如下所示

<appSettings>
  <add key="documentDbEndpoint" value="https://bhavin-patel.documents.azure.com:443/"/>
  <add key="documentDbKey" value="naw1rq0lhaPwzCSI1w69EQYEfUeL0rU*********************************"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

然后您应该使用配置管理器通过按键读取设置

client = new DocumentClient(new Uri(ConfigurationManager.AppSettings["documentDbEndpoint"]), ConfigurationManager.AppSettings["documentDbKey"]);
Run Code Online (Sandbox Code Playgroud)

请记住使用门户中的正确 documentDbKey。我用 * 掩盖了你的部分密钥