EF迁移报错‘Host Cannot be null’,请求排查问题原因
问题原因及解决方法
核心原因
builder.Configuration.GetConnectionString("PostgreConnection") 方法默认从配置文件的 ConnectionStrings 根节点 中匹配读取连接字符串,但你当前的连接字符串是放在自定义的 PostgreConnectionString 节点下的,导致方法返回null,Npgsql无法解析到主机信息,因此抛出"Host Cannot be null"错误。
两种解决方式
方式一:调整配置节点结构
将连接字符串移到标准的ConnectionStrings节点下,让GetConnectionString能正常读取:
"ConnectionStrings": { "PostgreConnection": "host=localhost;port=5432;dbname=OpenAccessDB;user=postgres;password=postgres;Integrated Security=true;" }
方式二:直接读取自定义节点
如果不想修改配置结构,直接通过配置路径读取对应值:
builder.Services.AddDbContext<OpenAccessDBContext>(o => o.UseNpgsql(builder.Configuration["PostgreConnectionString:PostgreConnection"]));
额外提示:你的连接字符串同时包含user=postgres和Integrated Security=true,这两种认证方式存在冲突,建议根据实际场景保留其一(比如本地测试用密码认证的话,可移除Integrated Security=true)。
内容的提问来源于stack exchange,提问作者Hemalatha Bheta
相关产品推荐
相关产品推荐

