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

ASP。NET 5(vNext)-获取配置设置

鄢修德
2023-03-14

我正在写一个学习ASP的基本应用程序。净5。我发现一个非常令人困惑的领域是配置。在ASP之前。NET 5,我可以做以下几点:

var settingValue = ConfigurationManager.AppSettings["SomeKey"];

我会在我的代码中散布这样的代码行。现在,在vNext世界中,我有一个配置。json文件,如下所示:

配置。json

{
  "AppSettings": {
    "SomeKey":"SomeValue"
  }
}

然后在创业阶段。cs,我有以下几点:启动。反恐精英

public IConfiguration Configuration { get; set; }
public Startup(IHostingEnvironment environment) 
{
  Configuration = new Configuration()
      .AddJsonFile("config.json");
}

从那以后,我完全不知所措。我有我的课。cs in/src/Website/Code/Models/MyClass。反恐精英。

我的班级。反恐精英

public class MyClass
{
  public string DoSomething() 
  {
    var result = string.Empty;
    var keyValue = string.Empty; // TODO: What do I do here? How do I get the value of "AppSettings:SomeKey"?
    return result;
  }
}

如何获取“AppSettings:SomeKey”的值?

共有3个答案

翟理
2023-03-14

我强烈建议使用选项model,而不是直接读取配置。它允许强类型模型绑定到配置。

下面是一个例子:GitHub。com/aspnet/Options/test/Microsoft。扩展。选项。测试/选项测试。反恐精英

针对您的具体情况创建一个模型:

class AppSettings {
    public string SomeSetting {get;set;}
}

然后将其绑定到您的配置:

var config = // The configuration object
var options = ConfigurationBinder.Bind<AppSettings>(config); 
Console.WriteLine(options.SomeSetting);

这样你就不必担心设置来自哪里,它是如何存储的,或者它的结构是什么。你只需预先定义你的选项模型,奇迹就会发生。

闻人鸿文
2023-03-14

我使用ASP. NET 5依赖注入,就像这样。

config.json:

{
    "random":  "Hello World!"
}

创业。反恐精英:

public class Startup
{
    public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
    {
        var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
            .AddJsonFile("config.json");

        Configuration = builder.Build();
    }

    public IConfiguration Configuration { get; set; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddSingleton<IConfiguration>(sp => { return Configuration; });
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseMvc(routes =>
        {
            routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}");
        });

    }

}

控制器:

public class HomeController : Controller
{

    IConfiguration config;

    public HomeController(IConfiguration config)
    {
        this.config = config;
    }

    public IActionResult Index()
    {
        var template = "<marquee>{0}</marquee>";
        var content = string.Format(template, config.Get("random"));
        return Content(content, "text/html");
    }
}
章增
2023-03-14

ASP。NET 5大量使用依赖项注入,所以如果您也使用依赖项注入,那么这非常简单。如果查看示例MVC6项目,您可以看到它是如何工作的:

首先,属性中定义了一个类AppSettings,它是类支持的选项的强类型版本。在示例项目中,它只包含SiteTitle。

public class AppSettings
{
    public string SiteTitle { get; set; }
}

然后,通过ConfigureServices中的依赖项注入初始化该类<代码>配置这是您在Startup类的构造函数中创建的一个。

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<AppSettings>(Configuration.GetSubKey("AppSettings"));
    // ...
}

然后,假设您的类是由依赖项注入容器实例化的,您只需请求一个IOptions,就可以得到一个。例如,在控制器中,您可以具有以下功能:

public class HomeController
{
    private string _title;
    public HomeController(IOptions<AppSettings> settings) 
    {
        _title = settings.Options.SiteTitle;
    }
}
 类似资料:
  • 在Asp。Net Core 3.1应用程序我有以下关于应用程序设置的部分: 我试图获取一些值,比如Facebook的Id,所以我尝试: 但这行不通。。。我怎样才能得到这些值?

  • X1.2新增 sp_get_cmf_settings($key); 功能: 获取cmf的设置;如果key为空则返回所有设置,如果key不为空,则返回相应key的设置 参数: $key:默认为空,设置的key 返回: 如果key为空则返回所有设置,如果key不为空,则返回相应key的设置

  • cmf_get_option($key) 功能 获取系统配置,通用 参数 $key: string 配置键值,都小写 返回 array 配置信息

  • X1.4.0新增 sp_get_plugin_config($name) 功能: 获取插件配置 参数: $name:插件名 返回: 类型数组,插件配置信息

  • 接口说明 获取许可配置 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/license/1.0.0/getLicenseConf 是否需要登录 否 请求字段说明 无 响应字段说明 无 响应成功示例 { "code": 200, "data": "CODE#URL", "message": "OK" } 响应失败

  • 我刚刚将我们的Spring Boot项目从引导升级到v2.6.2,从Spring Cloud升级到2021.0.0。 现在,我的远程配置获取没有任何效果,应用程序也无法获取正确的属性文件 [main]INFO o. s. c. c. c. ConfigServiceProperty tySourceLocator-从服务器获取配置:http://localhost:8080 [main]WARN