Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问静态类上的配置/设置-Asp核心_C#_Asp.net Core_.net Core_Asp.net Core Mvc - Fatal编程技术网

C# 访问静态类上的配置/设置-Asp核心

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

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

在Project.Core中,我有一个静态文件,可以这样调用
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");