我发现使用设置的首选方法是使用“选项”模式,并在要使用设置的类中注入IOptions<T>
对象。
还有其他解决方案如何在业务/域层中实现此功能,而我不想引用ASP.NET Core特定的DLL,例如具有IOptions<T>
基础结构的DLL?
答案 0 :(得分:0)
您也可以使用IConfiguration
。该技术发展迅速,最佳实践也在不断变化。以2.0,2.1,2.2和3.0
从今天开始,您可以明智地在任何这些版本中构建ASP.NET Core应用程序。
找到中间立场,例如2.1,看看the configuration docs并花一些时间来理解使用此方法的许多不同方式。
在2.1中,您可以使用appSettings.json
来控制不同部署和不同层的设置。
默认脚手架会添加CreateWebHostBuilder
:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
在幕后,该调用两次调用AddJsonFile
,一次调用appsettings.json
,再次调用appsettings.{Environment}.json
。
向您的项目添加appsettings.Production.json
文件,您将获得好处。
然后将根据ASPNETCORE_ENVIRONMENT
值使用相应的appSettings文件,该值可以根据需要添加到项目属性(或Azure Web App |应用程序设置)中。如果未提供,则默认为Production
答案 1 :(得分:0)
要在.Net Core中读取配置,请执行以下操作:
//Sample appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"UserId": "sa",
"UserPassword": "123",
"ServerName": "abc"``
}
第2步: 下载NuGet软件包 -Microsoft.Extensions.Configuration,Microsoft.Extensions.Configuration.FileExtensions ,Microsoft.Extensions.Configuration.Json
Add Class(name class whatever you want)
static class AppSettings
{
public static IConfiguration Settings { get; }
static AppSettings()
{
Settings = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").Build();
}
}
在业务中,逻辑读为:
string strUserID= AppSettings.Settings["DbUserId"].ToString()