我正在使用 Azure CosmosDB SQL API。我有一个异步任务要连接到我的 AzureCosmosDB 帐户,并且我正在尝试通过代码创建数据库。
以下是我的代码片段
private async Task ConnectToDocumentDB()
{
this.client = new DocumentClient(new Uri(EndpointUrl), PrimaryKey);
Console.WriteLine(client.WriteEndpoint);
Database db = await this.client.CreateDatabaseIfNotExistsAsync(new Database { Id = "MyDB" });
Console.WriteLine("Response --" + db.Id);
}
当我在控制台中查看客户端的 EndPonit 以确保 AzureCosmosDb 连接时,我能够查看正确的 EndPoint。但是当我尝试创建数据库时,它不会创建数据库。
main方法调用该异步任务的方法如下
Program p = new Program();
p.ConnectToDocumentDB().Wait();
我不知道我哪里出了问题。帮我解决这个问题。
提前致谢!
根据您的应用程序的上下文,当您的代码到达
.Wait()
调用时,async
可能会导致死锁。
您应该使用
.GetAwaiter().GetResult()
,以便在幕后正确生成状态机以防止出现此问题。
@nick 已添加您的行,但是调用 CreateDatabase Async 仍然挂在该步骤上,但是这种情况仅发生在 cosmos 版本 3.25 及更高版本中 有什么指点吗