C# 访问静态类上的配置/设置-Asp核心
我有三个解决方案。Web、Project.Core(业务)和Project.Layer(模型) 在Project.Core中,我有一个静态文件,可以这样调用C# 访问静态类上的配置/设置-Asp核心,c#,asp.net-core,.net-core,asp.net-core-mvc,C#,Asp.net Core,.net Core,Asp.net Core Mvc,我有三个解决方案。Web、Project.Core(业务)和Project.Layer(模型) 在Project.Core中,我有一个静态文件,可以这样调用Business.GetAllData()来自Project.Web.Controller 这将调用DAL/EF文件并获取数据(BusinessDal.GetData()) 在我的配置/DbContext.cs中,我有以下内容: protected override void OnConfiguring(DbContextOptionsBui
Business.GetAllData()代码>来自Project.Web.Controller
这将调用DAL/EF文件并获取数据(BusinessDal.GetData()
)
在我的配置/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();
}
但是现在呢?。。。显示如何从控制器读取它。这部分工作正常,我可以读取控制器上的设置。但是,我不知道如何将它传递给另一个项目,并且仍然能够从静态类调用它 我觉得这可能比必要的工作要多,但我现在很忙,所以这就是我目前要做的。当其他解决方案可用时,请随时发布
我创建了另一个静态类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中的方法(通过使用构造函数)。但是,这对我不起作用,因为我是从静态文件调用DbContext的,所以DbContextOptions丢失了 基于上述相同原理的略短版本:
public Startup(IConfiguration configuration)
{
Configuration = configuration;
StaticConfig = configuration;
}
public static IConfiguration StaticConfig { get; private set; }
要在另一个静态
类中使用:
string connString = Startup.StaticConfig.GetConnectionString("DefaultConnection");
看看这个,它可能会帮助你:这就是我要找的。工作得很好。谢谢你,老兄。我用过了,效果很好!如果你想找一些简单干净的东西,那就比实际答案好。
string connString = Startup.StaticConfig.GetConnectionString("DefaultConnection");