docker - 添加第二个 EF 核心数据库后 Blazor 服务器端 docker 容器分段错误
问题描述
因此,我一直在尝试对 blazor 服务器端应用程序进行身份验证。启动和运行 UI 进展顺利,第一个问题是尝试在无法解密的云平台上运行容器时出现,然后归结为密钥的默认存储,使得它们在容器重启后丢失。因此,我觉得最简单的解决方案就是添加第二个数据库,就像这里提到的那样。在那里的文档中,两个 dbcontexts 似乎很好,我遵循了他们的代码,两个 dbcontexts 最终看起来像这样:
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
namespace AuthTest.Data
{
public class AppDbContext : IdentityDbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
}
}
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.DataProtection.EntityFrameworkCore;
namespace AuthTest.Data
{
public class AppKeyDbContext : DbContext, IDataProtectionKeyContext
{
public AppKeyDbContext(DbContextOptions<AppKeyDbContext> options) : base(options)
{
}
public DbSet<DataProtectionKey> DataProtectionKeys { get; set; }
}
}
和配置服务:
services.AddDbContext<AppDbContext>(options => options.UseSqlite("DataSource=app.db"));
services.AddDefaultIdentity<IdentityUser>().AddEntityFrameworkStores<AppDbContext>();
services.AddScoped<AuthenticationStateProvider, ServerAuthenticationStateProvider>();
services.AddDbContext<AppKeyDbContext>(options => options.UseSqlite("DataSource=key.db"));
services.AddDataProtection().PersistKeysToDbContext<AppKeyDbContext>();
现在构建容器一开始只有一个 dbcontext 运行良好,在添加第二个之后它首先无法添加迁移和更新数据库,这是一个简单的修复,将 --context 标志添加到这些命令。但是现在有了一个构建良好的容器之后,我最终得到了一个由于分段错误而立即崩溃的 .dll。
现在我很难过。由于我在这两种情况下的 dotnet ef 命令都没有出错,而且 dotnet 构建也通过了,所以我真的不知道从哪里开始。并且 docker inspect / logs 没有提供我能找到的任何信息。值得一提的是,最终的 dotnet .dll 命令在 mcr.microsoft.com/dotnet/aspnet:5.0-alpine 容器中运行。
解决方案
好吧,如果有人最终遇到同样的问题,我写的最后一行实际上很有价值。删除“-alpine”部分并为我的运行时容器使用“正常” aspnet:5.0 证明最终为我解决了这个问题。
推荐阅读
- wordpress - Wordpress 增加了先前批准的评论数量
- python - 使用 SMTP 库时有什么方法可以删除密件抄送标签吗?
- python - 如何在 python/Padas 中获取二维 df 中每一列中连续正数的计数
- serverless-framework - Mac 上的 Serverless DynamoDB Local 中出现 JNI 错误
- python - 例外:未找到 settings.yml
- c# - 本地键盘挂钩终止目标进程
- javascript - 有没有办法用替换功能替换多个字符?
- pyspark - databricks 分区日期按周
- jquery - ASP.NET Core MVC 中的动态控件创建问题
- github-actions - Chocolatey 无法在 GitHub Actions 中安装 visualstudio2017-workload-vctools