在 asp net core 控制台应用程序中读取 appsettings
Posted
技术标签:
【中文标题】在 asp net core 控制台应用程序中读取 appsettings【英文标题】:Read appsettings in asp net core console application 【发布时间】:2017-03-03 08:29:00 【问题描述】:我正在尝试读取我的控制台应用程序上的 appsetting 并设置他的 EntityFramework 连接字符串。
我做了很多谷歌,但没有找到任何单一的解决方案,甚至在微软的文档中也没有。
这是我的问题。
-
如何设置 EntityFramework 连接字符串?,我的实体框架项目是独立的,对于我的 MVC 项目,我按照以下代码进行。
string connectionString = Configuration.GetConnectionString("DefaultConnection"); services.AddDbContext<MyDBContext>(option =>option.UseSqlServer(connectionString, m => m.MigrationsAssembly("MyMVCDLL"))); services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
-
如何阅读应用设置?
如何在控制台应用程序中实现 DI 以获取应用程序设置?
谁能帮帮我。
【问题讨论】:
【参考方案1】:首先,不要将敏感数据(登录名、密码、API 密钥)保存在 appsettings.json
中,因为您可能会不小心将其提交给 Verison Control,从而导致您的凭据泄露。为此,您必须使用 User Secrets 工具进行开发,有关详细信息,请参阅User Secret documentation。
其次,阅读Configuration.GetConnectionString("DefaultConnection");
方法的工具提示文档。它明确指出`GetConnectionString 是一个
GetSection(“ConnectionStrings”)[名称]的简写
话虽如此,您的 appsettings.json 必须如下所示:
...,
"ConnectionStrings":
"DefaultConnection" : "Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;"
或在使用用户机密时:
dotnet 用户机密集 ConnectionStrings:DefaultConnection Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
更新
在控制台应用程序中使用它是完全一样的。配置包不是 ASP.NET Core 特定的,可以单独使用。
所需的包是(取决于您要使用的包
"Microsoft.Extensions.Configuration": "1.0.0", "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", "Microsoft.Extensions.Configuration.Json": "1.0.0", "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
并且构建配置的代码与 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();
【讨论】:
我完全理解这一点,正如我如何在 MVC 应用程序中使用相同的问题中提到的那样,我的问题是我将如何在控制台应用程序中访问它,如果可能的话,我会分享一些代码。我需要知道我需要使用什么构建器类和什么 dll。 完全一样。配置包不是 ASP.NET Core 特定的,因为它位于Microsoft.Extensions.Configuration
包中
好的,我将如何使用这个 "string connectionString = Configuration.GetConnectionString("DefaultConnection"); services.AddDbContext以上是关于在 asp net core 控制台应用程序中读取 appsettings的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core 读取配置 IOptions 控制器未触发
菜鸟入门ASP.NET Core5:命令行配置Json文件配置Bind读取配置到C#实例在Core Mvc中使用Options