gpt4 book ai didi

c# - 访问静态类的配置/设置 - Asp Core

转载 作者:可可西里 更新时间:2023-11-01 08:37:00 25 4
gpt4 key购买 nike

我有 3 个解决方案。 Project.Web、Project.Core(业务)和 Project.Layer(模型)。

在 Project.Core 中,我有一个静态文件,我可以像这样从 Project.Web.Controller 中调用 Business.GetAllData();

这会调用 DAL/EF 文件并获取数据 (BusinessDal.GetData())。

        using (DBContext db = new DBContext())
{
return db.GetAllData().ToPOCO();
}

在我的配置/DbContext.cs 中,我有这个:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
#if DEBUG
optionsBuilder.UseSqlServer(@"connstring");
#else
optionsBuilder.UseSqlServer(@"connstring");
#endif
// How do I access configuration here? Configuration["ConnectionString"]
}

我正在尝试做的是从我的 appsettings.json 中读取设置。我确保在 startup.cs 上正确加载了设置

public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}

但是现在呢?... MS Document展示了如何从 Controller 中读取它。那部分工作正常,我可以在 Controller 上读取我的设置。但是,我不确定如何将它传递给另一个项目并且仍然能够从静态类中调用它。

最佳答案

我觉得这可能比必要的工作更多,但我很着急,所以这就是我目前要做的。随时发布其他可用的解决方案。

我创建了另一个静态类 AppSettingsProvider.cs

public static class AppSettingsProvider
{
public static string DbConnectionString { get; set; }
public static bool IsDevelopment { get; set; }
}

然后我将它们设置在我的 Startup.cs 上

public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();

BuildAppSettingsProvider();
}
private void BuildAppSettingsProvider()
{
AppSettingsProvider.ConnectionString = Configuration.GetConnectionString("DBContext");
AppSettingsProvider.IsDevelopment = Configuration["IsDev"];
}

然后我可以从我的 DbContext.cs 中调用它

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
string connString = AppSettingsProvider.ConnectionString;
}

附言我尝试了 DbContext 中的依赖注入(inject)方法(通过构造函数)。但是,这对我不起作用,因为我是从静态文件调用 DbContext,因此 DbContextOptions 丢失了。

关于c# - 访问静态类的配置/设置 - Asp Core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48056104/

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