c# - HealthChecks.UI.SqlServer.Storage 迁移问题

标签 c# asp.net-core .net-6.0 health-check

我正在尝试在我的 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/

相关文章:

c# - 是否可以在 c# 的 lambda 表达式中使用可选/默认参数?

c# - 更好地了解 SECURED Cookie

c# - 尝试从一个域类映射到 View 模型类会跳过属性

c# - 使用 UseInMemoryDatabase 的 Entity Framework Core 迁移错误

c# - 如果对象属性存在,为什么 AutoMapper 验证不起作用?

c# - 找不到 VSCode .NET Core SDK

c# - Form_Closed 是删除事件处理程序的正确位置吗?

asp.net-core - 在 IIS 上托管 rc1-final-update1 时出现问题

c# - SignalR .NET 6 客户端未添加处理程序

c# - Blazor - 将函数传递给动态组件