如何在ASP.NET Core的业务/域层中使用设置?

时间:2019-01-14 16:31:27

标签: asp.net-core settings appsettings

我发现使用设置的首选方法是使用“选项”模式,并在要使用设置的类中注入IOptions<T>对象。

还有其他解决方案如何在业务/域层中实现此功能,而我不想引用ASP.NET Core特定的DLL,例如具有IOptions<T>基础结构的DLL?

2 个答案:

答案 0 :(得分:0)

您也可以使用IConfiguration。该技术发展迅速,最佳实践也在不断变化。以2.02.12.23.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()