阅读asp net core console应用程序中的appsettings

时间:2016-10-21 06:23:04

标签: c# asp.net-core entity-framework-6 console-application

我试图在我的控制台应用程序上阅读appsetting以及设置他的EntityFramework连接字符串。

我做了很多谷歌,但没有找到任何单一的解决方案,甚至没有微软的文档。

这是我的问题。

  1. 如何设置EntityFramework连接字符串?,我的实体框架项目是独立的,对于我的MVC项目,我按照以下代码执行此操作。
  2. string connectionString = Configuration.GetConnectionString("DefaultConnection");
    services.AddDbContext<MyDBContext>(option =>option.UseSqlServer(connectionString, m => m.MigrationsAssembly("MyMVCDLL")));
    services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
    
    1. 如何阅读appsetting?
    2. 如何在控制台应用程序中实现DI以获取应用程序?
    3. 有人可以帮助我。

1 个答案:

答案 0 :(得分:8)

首先,不要在appsettings.json中保存敏感数据(登录名,密码,API密钥),因为您可能会意外地将其提交给Verison Control,从而冒着您的凭据泄露的风险。为此,您必须使用User Secrets工具进行开发,有关详细信息,请参阅User Secret documentation

其次,阅读Configuration.GetConnectionString("DefaultConnection");方法的工具提示文档。它明确指出`GetConnectionString是

  

GetSection的简写(“ConnectionStrings”)[name]

话虽如此,你的appsettings.json必须如下所示:

{
    ...,
    "ConnectionStrings":
    {
        "DefaultConnection" : "Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;"
    }
}

或使用用户机密时:

  

dotnet user-secrets set ConnectionStrings:DefaultConnection Server = myServerAddress; Database = myDataBase; Trusted_Connection = True;

更新

在控制台应用程序中使用它完全相同。配置包不是特定于ASP.NET Core的,可以单独使用。

所需的包装(取决于您要使用的包装

  

&#34; Microsoft.Extensions.Configuration&#34;:&#34; 1.0.0&#34;,      &#34; Microsoft.Extensions.Configuration.EnvironmentVariables&#34;:&#34; 1.0.0&#34;,      &#34; Microsoft.Extensions.Configuration.FileExtensions&#34;:&#34; 1.0.0&#34;,      &#34; Microsoft.Extensions.Configuration.Json&#34;:&#34; 1.0.0&#34;,      &#34; Microsoft.Extensions.Configuration.UserSecrets&#34;:&#34; 1.0.0&#34;,

构建配置的代码与ASP.NET Core中的代码完全相同。而不是在Startup.cs中进行,而是在Main方法中执行此操作:

var builder = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    // You can't use environment specific configuration files like this
    // becuase IHostingEnvironment is an ASP.NET Core specific interface
    //.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
    .AddUserSecrets()
    .AddEnvironmentVariables();