当前位置: 首页 > 知识库问答 >
问题:

Asp.如何替换配置管理器

傅元龙
2023-03-14

我是ASP的新手。NET Core RC2,我想知道如何获得一些配置设置,并将其应用到我的方法中。例如在myappsettings中。json我有这个特定的设置

"ConnectionStrings": {
    "DefaultConnection": 
        "Server=localhost;User Id=postgres;port=5432;Password=castro666;Database=dbname;"
  }

在我的控制器中,每次我想查询数据库时,我都必须使用此设置

 using (var conn = 
     new NpgsqlConnection(
         "Server=localhost;User Id=postgres;port=5432;Password=castro666;Database=dbname;"))
 {
     conn.Open();
 }

这里最明显的一点是,如果我想在配置中添加更多内容,我必须更改该方法的每个实例。我的问题是如何在appsettings中获取DefaultConnectionjson这样我就可以这样做了

 using (var conn = 
     new NpgsqlConnection(
         ConfigurationManager["DefaultConnection"))
 {
     conn.Open();
 }

共有2个答案

乐刚毅
2023-03-14

ConfigurationManager。AppSettings
在中提供。NET Core 2.0,参考NuGet软件包
系统。配置配置管理器

方德宇
2023-03-14

在ASP. NET Core中,有很多选项可以用来访问配置。如果你对访问DefaultConnection感兴趣,你最好使用DI方法。为了确保您可以使用构造函数依赖注入,我们必须在我们的Startup.cs中正确配置一些东西。

public IConfigurationRoot Configuration { get; }

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

    Configuration = builder.Build();
}

现在,我们已经从构建器中读取了我们的配置JSON,并将其分配给了我们的配置实例。现在,我们需要将其配置为依赖项注入——因此,让我们先创建一个简单的POCO来保存连接字符串

public class ConnectionStrings
{
    public string DefaultConnection { get; set; }
}

我们正在实现“选项模式”,将强类型类绑定到配置段。现在,在ConfigureServices中执行以下操作:

public void ConfigureServices(IServiceCollection services)
{
    // Setup options with DI
    services.AddOptions();

    // Configure ConnectionStrings using config
    services.Configure<ConnectionStrings>(Configuration);
}

现在这一切都准备好了,我们可以简单地要求类的构造函数承担操作

public class MyController : Controller
{
    private readonly ConnectionStrings _connectionStrings;

    public MyController(IOptions<ConnectionString> options)
    {
        _connectionStrings = options.Value;
    }

    public IActionResult Get()
    {
        // Use the _connectionStrings instance now...
        using (var conn = new NpgsqlConnection(_connectionStrings.DefaultConnection))
        {
            conn.Open();
            // Omitted for brevity...
        }
    }
}

这是我经常建议大家阅读的官方文件。

 类似资料:
  • 在 Laravel 中,大多数采用 .env 文件管理,深度配置都采用 config/*.php 配置。 在 ThinkSNS+ 这一现象并没有发生改变,我们也推崇使用 Laravel 方式进行管理配置,但是有时候我们往往需要后期配置, 但是后期配置不可能期望用户去修改配置文件。这很危险,用户大多都没有技术能力。 所以,在 ThinkSNS+ 在 Laravel 配置的基础上增加了一份更加灵活的配

  • Swoole框架提供了配置文件管理的功能。配置可以直接用数组的方式进行访问,底层会自动加载配置文件目录下的$key.php文件。配置文件必须在末尾return $array返回配置的信息。 使用方法 //在控制器中 $this->config['user']; //其他位置 Swoole::$php->config['user']; 设置配置文件路径 Swoole\Config::setPath

  • San CLI 的配置文件为san.config.js,该文件放在项目的根目录下,当执行 San CLI 命令时,San CLI 会自动读取san.config.js的内容,在项目创建后,首先需要修改san.config.js来配置文件打包等选项。San CLI UI 将配置的每一项转换为表单,同时将配置项的语义直观的展示在页面,无需查找文档,直接在San CLI UI中修改表单,保存后即可看到s

  • local settings 作为一个开源项目,我们在这方面做得并不是特别好——当然是有意如此的。不过,这里我们还是做一些简单的介绍。对于我们的项目来说,我们需要一些额外的配置,如我们的数据库中的DATABASES、DEFAULT_AUTHENTICATION_CLASSES、CORS_ORIGIN_ALLOW_ALL、SECRET_KEY应该在不同的环境中都有不同的配置。 我们可以一个创建loc

  • 概述 应用的配置信息,一般通过环境变量来注入。这些配置的值,可以抽取出来,存放到ConfigMap里面。ConfigMap以Key-Value的形式来保存这些配置信息。 在部署应用的时候,可以通过引用ConfigMap的Key来设置环境变量,而不是直接赋值。这样可以集中管理配置信息,方便应用多次部署以及多个应用之间共享配置信息。

  • 默认情况下,插件管理器会为您的插件管理动作做出信息反馈。您可以通过添加 --quiet 和 --silent 选项为 install 和 remove 命令控制反馈信息的级别。使用 --quiet 选项屏蔽除错误信息以外的日志输出。使用 --silent 选项屏蔽所有输出。 默认情况下,插件管理器安装插件不会超时。使用 --timeout 选项并添加一个时间来指定安装超时时间: 设定30秒安装超时