在Controller中获取Azure AppSettings

时间:2017-10-31 10:19:08

标签: azure asp.net-core application-settings asp.net-core-2.0 azure-web-app-service

我在Azure上托管了一个ASP.NET Core 2应用程序,并在Azure门户中为我的应用程序添加了一个新的应用程序设置MyNewSetting

如何从控制器访问该设置?

我的代码如下:

public void ConfigureServices(IServiceCollection services)
{
    services.AddOptions();

    services.Configure<AppSecrets>(Configuration);
    services.AddSingleton<ITableRepositories, TableClientOperationsService>();
    //...

我的控制器:

public class RecordController : Controller
{
    const int MyNewSetting = 7; // this one to replace with Azure Setting one
    private readonly ITableRepositories repository;

    public RecordController(ITableRepositories rep) {
        repository = rep;
    }

在这里,我可能需要添加FromServices注射,但我不确定它是否会起作用...

修改

对于@dee_zg答案,以下代码可能会完成这项工作:

public class RecordController : Controller
{
    int MyNewSetting = 7;
    private readonly ITableRepositories repository;

    public RecordController(ITableRepositories rep) {
        repository = rep;
        int myInt;
        if (int.TryParse(System.Environment.GetEnvironmentVariable("MY_NEW_SETTING"), 
                         out myInt)) {
            MyNewSetting = myInt;
        };
    }

2 个答案:

答案 0 :(得分:2)

您可以选择从AppSettings["your-key"]集合中获取它们,也可以选择环境变量:Environment.GetEnvironmentVariable("your-key")

从那里,您可以将它们映射到您的自定义IOptions,并在您需要的任何地方注入。

答案 1 :(得分:0)

你可以做很多事情。

  1. 使用Options and configuration objects
      

    选项模式使用自定义选项类来表示一组相关设置。我们建议您为应用中的每个功能创建解耦类。

  2. 使用IOptionsSnapshot
      

    IOptionsSnapshot支持在配置文件更改时重新加载配置数据。它的开销很小。将IOptionsSnapshotreloadOnChange: true一起使用,选项将绑定到Configuration并在更改时重新加载。

  3. ...(见文件)
  4. 简而言之,请查看Configuration in ASP.NET Core,确定最符合您需求的方案并拥有它!

    希望这有帮助。