在ASP中启动..NET 5类库
本文关键字:NET 5类库 启动 ASP | 更新日期: 2023-09-27 18:04:35
我创建了一个ASP。. NET类库在我的ASP。NET5应用程序。我想添加Startup.cs
文件,以便从。json (ConnectionString)文件加载一些配置,以便在项目中使用它并将其添加到DI。然后我想把AppSettings
注入同一个项目的DbContext
中。但这是不工作,似乎代码在启动类永远不会执行。
将AppSettings
注入DbContext
引发异常
InvalidOperationException: Unable to resolve service for type 'Beo.Dal.Properties.AppSettings' while attempting to activate 'Beo.Dal.DataContexts.ApplicationDbContext'.
DbContext
private static bool IsCreated;
private AppSettings AppSettings;
public ApplicationDbContext(AppSettings settings)
{
AppSettings = settings;
if (!IsCreated)
{
Database.AsRelational().ApplyMigrations();
IsCreated = true;
}
}
是我错过了什么还是我完全搞错了?我已经在MVC项目中得到了一个Startup.cs
,它工作得很好。我可以在类库中使用它吗?如果不是,我该如何加载这个。json?
这是我在里面实际做的:
public class Startup
{
public AppSettings Settings { get; set; }
public IConfiguration Configuration { get; set; }
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
{
var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
.AddJsonFile("config.json")
.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);
builder.AddEnvironmentVariables();
Configuration = builder.Build();
Settings = new AppSettings();
}
public void Configure(IApplicationBuilder app)
{
string connectionString;
if (Configuration.TryGet("Data:DefaultConnection:ConnectionString", out connectionString))
{
Settings.ConnectionString = connectionString;
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddInstance(Settings);
}
}
你不能有第二个Startup.cs
文件,因为类库不是一个可以启动的项目。您应该做的是利用依赖注入并将DbContext添加到服务中。现在,当您需要为存储库使用DbContext时,它就准备好了。