【发布时间】:2018-07-23 07:37:58
【问题描述】:
当我创建 .net 核心 Web 应用程序时,我会在测试期间使用密钥管理器。我通常能够创建一个新的 web 项目(mvc 和 web api),右键单击该项目并选择“管理用户机密”。这将打开一个 json 文件,我在其中添加秘密。然后我在我的 startup.cs 中使用它,如下所示:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseMySql(Configuration["connectionString"]));
该网站可以正常工作,并且可以很好地连接到数据库。但是,当我尝试使用 add-migration 等 ef 核心迁移命令时,它们似乎无法从秘密管理器访问连接字符串。我收到错误消息“连接字符串不能为空”。当我使用实际字符串对Configuration["connectionString"] 进行硬编码时,错误消失了。我在网上查了一下.csproj文件,它们已经包含以下几行:
<UserSecretsId>My app name</UserSecretsId>
后来:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
我需要添加什么以便迁移可以访问连接字符串吗?
更新
我在上下文类中只有一个构造函数:
public ApplicationDBContext(DbContextOptions<ApplicationDBContext> options) : base(options)
{
}
【问题讨论】:
标签: visual-studio-2017 asp.net-core-2.0 entity-framework-core-migrations secret-manager