如何提供从 Web API 到 class 库依赖的配置

How to supply configuration from Web API to class library dependency

我在与 Core Web API 相同的解决方案中有一个 class 库,我需要该库才能访问某些配置应用程序设置。

在控制台应用程序或 Web 表单的世界中,我只是将这些设置放入 app.config(对于控制台)或 web.config(对于 ASP.NET 项目)和依靠 ConfigurationManager 来计算。但是,我发现这在 WebAPI.

中不再有效

例如,我有以下控制器...

    public class LabController : ControllerBase
    {
        [HttpGet]
        public IActionResult Get()
        {
            TestUtility util = new TestUtility();
            string result = util.ConfigTest();

            return Ok( new { Message = result});           
        }
    }

在单独的 class 库项目中依赖于以下 class...

    public class TestUtility
    {
        public string ConfigTest()
        {
            string result = "I can't reach the configuration.";

            try
            {
                result = ConfigurationManager.AppSettings["HomeAddress"].ToString();
            }
            catch (Exception) { }

            return result;
        }
    }

这是 appsettings.json 文件...

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "HomeAddress": "123 Elm St."
}

服务返回的结果是配置失败消息,而不是“123 Elm St.”。我想在 class 库中提供。 如何使主 (WebAPI) 项目中的配置设置可用于 class 库中的代码?

谢谢。

如果 'TestUtility' class 在 DI 容器中注册,您可以将配置注入 class 的构造函数。

    public class TestUtility
    {
        private readonly string _homeAddress;
        
        public TestUtility(IConfiguration configuration) 
        { 
            _homeAddress = configuration["HomeAddress"]
        }

        public string ConfigTest()
        {
             return _homeAddress;
        }
    }