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

时间:2016-10-28 05:55:41

标签: 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

我已从Azure中创建的DocumentDB应用程序中将URI和主/辅助密钥插入到我的应用程序的Web.config文件中。

2 个答案:

答案 0 :(得分:2)

您的问题是数据库端点和密钥应该在.config文件中,如此

<appSettings>
  <add key="documentDbEndpoint" value="https://bhavin-patel.documents.azure.com:443/"/>
  <add key="documentDbKey" value="naw1rq0lhaPwzCSI1w69EQYEfUeL0rU*********************************"/>
</appSettings>

然后您应该使用配置管理器通过密钥

读取设置
client = new DocumentClient(new Uri(ConfigurationManager.AppSettings["documentDbEndpoint"]), ConfigurationManager.AppSettings["documentDbKey"]);

请记住从门户网站使用正确的documentDbKey。我用*

掩盖了你的部分钥匙

答案 1 :(得分:0)

运行Azure Function时遇到此错误。

enter image description here

我正在从Azure Key Vault中读取连接字符串值之一,并且已在Azure函数配置的应用程序设置中进行了设置。根据{{​​3}},必须为Azure功能设置Managed Identity,并使用创建的托管身份对象在Key Vault配置中创建Access Policy。可以从Key Vault中读取值。

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

Microsoft Documentation