gpt4 book ai didi

c# - ASP.NET 5 类库中的 Startup.cs

转载 作者:太空狗 更新时间:2023-10-30 01:34:12 26 4
gpt4 key购买 nike

我在我的 ASP.NET5 应用程序中创建了一个 ASP.NET 类库。我想添加 Startup.cs 文件以便从 .json (ConnectionString) 文件加载一些配置以在项目中使用它并将其添加到 DI。然后我想将 AppSettings 注入(inject)到我的 DbContext 中,它在同一个项目中。但这不起作用,似乎 Startup 类中的代码从未执行过。

注入(inject) AppSettingsDbContext 抛出异常

InvalidOperationException: Unable to resolve service for type 'Beo.Dal.Properties.AppSettings' while attempting to activate 'Beo.Dal.DataContexts.ApplicationDbContext'.

数据库上下文

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 文件,因为类库不是可以启动的项目。您应该做的是利用依赖注入(inject)并将您的 DbContext 添加到服务中。现在,当您需要存储库的 DbContext 时,它就可以使用了。

核心的 DI 文档中有一个示例 http://docs.asp.net/en/latest/fundamentals/dependency-injection.html#using-framework-provided-services

关于c# - ASP.NET 5 类库中的 Startup.cs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31630637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com