无法使用EF Core 3.0 CosmosDb提供程序连接到Azure Cosmos Db帐户(Core SQL API)

时间:2019-10-18 08:40:44

标签: entity-framework-core azure-cosmosdb azure-cosmosdb-sqlapi .net-core-3.0 entity-framework-core-3.0

我无法使用以下软件包通过CosmosDb提供程序连接到Azure CosmosDB:

Microsoft.EntityFrameworkCore 3.0.0 Microsoft.EntityFrameworkCore.Cosmos 3.0.0

获取此消息:

响应状态代码未指示成功:503子状态:0原因:(请求失败,因为客户端无法跨1个区域建立到3个端点的连接。请检查客户端资源不足问题并验证客户端和服务器之间的连接性

Stacktrace

at Microsoft.Azure.Cosmos.ResponseMessage.EnsureSuccessStatusCode() at Microsoft.Azure.Cosmos.CosmosResponseFactory.ToObjectInternal[T](ResponseMessage cosmosResponseMessage, CosmosSerializer jsonSerializer) 
at Microsoft.Azure.Cosmos.CosmosResponseFactory.<>c__DisplayClass6_0.<CreateDatabaseResponseAsync>b__0(ResponseMessage cosmosResponseMessage) 
at Microsoft.Azure.Cosmos.CosmosResponseFactory.<ProcessMessageAsync>d__121.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at Microsoft.Azure.Cosmos.CosmosClient.<CreateDatabaseIfNotExistsAsync>d__40.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()
at Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosClientWrapper.d__13.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosClientWrapper.CreateDatabaseIfNotExistsOnce(DbContext context, Object state) 
at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementation[TState,TResult](Func3 operation, Func3 verifySucceeded, TState state) 
at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.Execute[TState,TResult](TState state, Func3 operation, Func3 verifySucceeded) 
at Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosClientWrapper.CreateDatabaseIfNotExists() at Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosDatabaseCreator.EnsureCreated() 
at Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureCreated() at EFCoreCosmosDbTest.Test.<Run>d__0.MoveNext() in C:\Git\EFCoreCosmosDbTest\EFCoreCosmosDbTest\Test.cs:line 26 
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at EFCoreCosmosDbTest.Program.<Main>d__0.MoveNext()
in C:\Git\EFCoreCosmosDbTest\EFCoreCosmosDbTest\Program.cs:line 9

如果我更改为Microsoft.Azure.DocumentDB.Core 2.8.1并使用DocumentClient,则在连接到Azure中相同的CosmosDb帐户并通过相同的解决方案创建数据库,容器等时,我没有问题。

此外,如果我从Azure下载.net核心快速入门项目,则该项目可以正常工作。

请注意,使用EF在本地连接到Azure Cosmos Db模拟器可以正常工作。

我使用了https://github.com/aspnet/EntityFramework.Docs/tree/master/samples/core/Cosmos存储库来运行测试。

有什么主意我做错了吗?

  • EF Core版本:3.0
  • 数据库提供者:Microsoft.EntityFrameworkCore.CosmosDb
  • 目标框架:.NET Core 3.0

1 个答案:

答案 0 :(得分:0)

EF Provider正在使用下面的Cosmos SDK软件包。

enter image description here

请在您的项目中将Microsoft.Azure.Cosmos包添加到最新版本(3.2.2)。

您可以通过NET Core CLI通过在具有当前项目文件的文件夹上运行dotnet add package Microsoft.Azure.Cosmos来执行此操作,它应该使用PackageReference更新CSPROJ。