我正在尝试在我的 asp.net core 应用程序中使用 Healthchecks UI 和 SqlServer.Storage
来实现历史记录。它与 InMemoryStorage
一起使用(当然没有历史记录部分)。
所以,Startup.cs
代码是这样的:
services.AddHealthChecks()
.AddHangfire(...)
.AddDbContextCheck<...>("Database")
.AddAzureBlobStorage(...)
.AddProcessAllocatedMemoryHealthCheck(...)
.AddCheck(...);
services
.AddHealthChecksUI(settings =>
{
settings.SetEvaluationTimeInSeconds(...);
settings.SetMinimumSecondsBetweenFailureNotifications(...);
settings.MaximumHistoryEntriesPerEndpoint(...);
})
.AddSqlServerStorage(Configuration.GetConnectionString("..."));
稍后,在 Configure
方法中进行额外配置
当使用 AddInMemoryStorage
而不是 AddSqlServerStorage
时,一切正常。使用 AddSqlServerStorage
时,应用程序在启动时崩溃,并且
SqlException: Invalid object name 'Configurations'.
当然,SQL 表丢失了,但我无法强制[从 nuget package 迁移]应用于数据库。
当然,我可以复制/粘贴迁移或在数据库中创建表,但由于 future 的更改和保持代码整洁,我想跳过这些。
有人能给我指出正确的方向来解决这个问题吗? 谢谢
最佳答案
我已经成功解决了这个问题。
由于迁移未应用于数据库,因此我像这样在 Main
中运行它们。
var app = CreateHostBuilder(args).Build();
//run heaalthchecksui migrations
using (var scope = app.Services.CreateScope())
{
var healthChecksDb = scope.ServiceProvider.GetRequiredService<HealthChecksDb>();
healthChecksDb.Database.Migrate();
}
app.Run();
所以,也许这个解决方法可以帮助遇到类似问题的人。
关于c# - HealthChecks.UI.SqlServer.Storage 迁移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74158145/