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

Entity framework core 无法使用EF Core 3.0 CosmosDb提供程序连接到Azure Cosmos Db帐户(核心SQL API),entity-framework-core,azure-cosmosdb,azure-cosmosdb-sqlapi,.net-core-3.0,entity-framework-core-3.0,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个终结点的连接。请检查客户端资源不足问题,并验证客户端和服务器之间的连接 堆栈跟踪 位于Microsoft.Azure.Cosmos.ResponseM

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

Microsoft.EntityFrameworkCore 3.0.0 Microsoft.EntityFrameworkCore.Cosmos 3.0.0

返回此消息:

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

堆栈跟踪
位于Microsoft.Azure.Cosmos.ResponseMessage.EnsureAccess StatusCode()位于Microsoft.Azure.Cosmos.CosmosResponseFactory.ToObjectInternal[T](ResponseMessage cosmosResponseMessage,CosmosAsserializer jsonSerializer)
在Microsoft.Azure.Cosmos.CosmosResponseFactory.c_uu显示Class6_0.b_u0(响应消息cosmosResponseMessage)
在Microsoft.Azure.Cosmos.CosmosResponseFactory.d_u121.MoveNext()上
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
位于Microsoft.Azure.Cosmos.CosmosClient.d__40的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中的System.Runtime.CompilerServices.TaskWaiter1.GetResult(),位于System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult()中
在Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosClientWrapper.d_u13.MoveNext()中
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
位于Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosClientWrapper.CreateDatabaseIfNoteExistsOnce(DbContext上下文,对象状态)的System.Runtime.CompilerServices.TaskWaiter1.GetResult()处
在Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementation[TState,TResult](Func3操作,Func3验证成功,TState状态)
在Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.Execute[TState,TResult](TState状态,Func3操作,Func3验证成功)
位于Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosClientWrapper.CreateDatabaseIfNotExists()的Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosDatabaseCreator.EnsureCreated()中
在Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureCreated()中,在C:\Git\efcoreComosmdbtest\efcoreComosmdbtest\Test.cs中的efcoreComosmdbtest.Test.d\uu 0.MoveNext()处重新创建()代码:第26行
在EFCORESOMOSDBTest.Program.d__0.MoveNext()中的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处的HandleNonSuccessAndDebuggerNotification(任务任务)
在C:\Git\EFCoreCosmosDbTest\EFCoreCosmosDbTest\Program.cs中:第9行
如果我更改为Microsoft.Azure.DocumentDB.Core 2.8.1并使用DocumentClient,我在Azure中连接到同一CosmosDb帐户并从同一解决方案创建数据库、容器等时不会出现问题

另外,如果我从Azure下载.net core quickstart项目,它可以正常工作

请注意,使用EF在本地连接Azure Cosmos Db Emulator时工作良好

我使用回购协议来运行测试

知道我做错了什么吗

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

    • EF提供商正在使用下面的Cosmos SDK包

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


      您可以通过NET Core CLI执行此操作,方法是在包含当前项目文件的文件夹上运行
      dotnet add package Microsoft.Azure.Cosmos
      ,它应该使用
      PackageReference

      更新您的CSPROJ您是否尝试过将Cosmos SDK更新到3.0.1?@ErikEJ刚刚尝试更新到-Microsoft.EntityFrameworkCore“Version=“3.1.0-preview1.1956.2”-Microsoft.EntityFrameworkCore.Cosmos”Version=“3.1.0-preview1.1956.2”"同样的问题。我指的是Cosmos SDK,而不是EF core Microsoft.Azure.Cosmos包-3.0.2是outoh OK,但问题在于EF core和EF core Cosmos提供程序。即通过其Cosmos提供程序连接。通过Microsoft.Azure.Cosmos包中的CosmosClient或例如tMicrosoft.Azure.DocumentDB包中的DocumentClient由于EF提供商正在使用下面的Cosmos SDK,您不应该被要求单独安装它,对吗?已经被引用。无论如何,安装它和仍然使用EF进行连接没有什么区别。尽管我得到了关于这个问题的答案:而且它可以改变
      C连接模式
      网关
      不需要您,不需要。但是依赖项的目标是>=
      3.0.0
      ,它可能是拉一个较旧的包版本,而不是最新的包版本。
      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