ASP.NET 5中强类型的AppSettings配置

时间:2015-10-15 07:09:30

标签: entity-framework-6 asp.net-core

使用WebApi 2时,我的web.config是

<connectionStrings>
    <add name="RavenHQ" connectionString="Url=http://localhost:8080;Database=ModelFarmDb" />    
</connectionStrings>

对于ASP.NET 5.0,我无法解决如何编写config.json文件来做同样的事情。

我已经尝试了

{
    "Data": {
        "RavenHQ": {
            ConnectionString: "Url=http://localhost:8080;Database=ModelFarmDb"
        }
    }
}

但它不起作用。有关如何直接将web.config部分映射到config.json的任何建议,以免破坏其他假定web.config的库?

该应用程序在本地IIS Express下运行,是Azure上的Web应用程序。

非常感谢!

1 个答案:

答案 0 :(得分:2)

您可以通过不同的方式在asp.net 5.0中完成此操作。我在这个例子中使用了json文件。如果您需要添加xml文件,请使用这些包Microsoft.Framework.Configuration.Xml并使用.AddXmlFile()方法

  

此示例使用beta 7

创建AppSetting类

public class AppSetting
{
    public string Setting1 { get; set; }

    public string Setting2 { get; set; }

}

在你的启动文件中添加带有此示例配置的json文件是call config.json

public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
{       

    var builder = new ConfigurationBuilder()
        .SetBasePath(appEnv.ApplicationBasePath)
        .AddJsonFile("config.json")
        .AddXmlFile("thefilename")
        .AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);

    builder.AddEnvironmentVariables();

    Configuration = builder.Build();
}

public IConfiguration Configuration { get; set; }

然后,您需要添加AppSetting类的应用程序服务,以便可以注入它 供以后使用

services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));

然后在你的控制器或你需要配置的地方注入IOptions<AppSettings>

public class SampleController : Controller
{

    private readonly AppSettings _appSettings;

    public SampleController(IOptions<AppSettings> appSettings)
    {            
        _appSettings = appSettings.Value;            
    }

}

这就是json的样子

{
  "AppSetting": {
    "Setting1": "Foo1",
    "Setting1": "Foo1"
  }
}

我在github

中从live.asp.net获取了这些代码