EntityFrameworkCore.Cosmos预览3-找不到错误

时间:2018-11-07 03:19:37

标签: asp.net-core entity-framework-core azure-cosmosdb

我正在尝试在ASP.NET Core网站中使用新的EntityFrameworkCore.Cosmos Preview 3程序包,但是在尝试创建数据库时却不断收到错误消息。我似乎找不到任何文档可以让我了解导致错误的原因。

在我的Startup.cs文件中的ConfigureServices方法中,我具有以下代码:

// Configure EntityFramework - CosmosDB
services.AddDbContext<EFContext>(options => options.UseCosmos(
    authKeyOrResourceToken: ServiceFactory.GetDbKeySecret(_config, (_hosting.EnvironmentName != "LocalDev")),
    serviceEndPoint: _config.GetValue<string>("CosmosDb:Endpoint"),
    databaseName: _config.GetValue<string>("CosmosDb:DatabaseID")
));
EFContext efc = services.BuildServiceProvider().GetRequiredService<EFContext>();
efc.Database.EnsureCreatedAsync().Wait();

到达最后一行时,出现以下错误(堆栈跟踪):

at Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosClient.CreateDatabaseIfNotExistsOnceAsync(DbContext _, Object __, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementationAsync[TState,TResult](Func`4 operation, Func`4 verifySucceeded, TState state, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementationAsync[TState,TResult](Func`4 operation, Func`4 verifySucceeded, TState state, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosDatabaseCreator.EnsureCreatedAsync(CancellationToken cancellationToken)

对于Fiddler,详细的响应是:“ {” code“:” NotFound“,” message“:”系统中不存在具有指定ID的实体。\ r \ nActivityId:6aed2df0-abe8-4e93-b468 -b3188005fcb5,Microsoft.Azure.Documents.Common / 2.1.0.0“}”

我检查并再次检查了配置中的所有值是否正确,并与Azure中的CosmosDB帐户匹配,但我仍然不知道是什么导致了此错误。

有人遇到这个问题并有解决方案吗? 谢谢

1 个答案:

答案 0 :(得分:0)

我发现以前发布过一个类似的问题(Azure Cosmos DB - CreateDatabaseAsync - Resource Not Found),其中有人遇到了同样的问题,并通过删除数据库并重新创建来解决了该问题。我尝试了同样的事情,发现我的代码按预期工作。

我猜在创建过程中存在一些错误,而该错误从未用原始CosmosDB帐户创建报告过(或者我在某处错过了错误消息)。因此,如果有人收到类似消息,请尝试重新创建您的帐户。