在 asp.net 核心中的项目之间共享配置文件

Sharing configuration file among the projects in asp.net core

我在 asp.net core 中有一个解决方案,里面有多个 API 项目,这是一种微服务架构。我的解决方案结构如下所示。

ABC.API
DEF.API
GHI.API and so on....

我还有一个 class 库项目,它具有一些共同的功能,可以被以上所有 API 项目使用。

我想使用 json 文件或 config 文件将连接字符串保留在 class 库项目中,因为以上所有都连接到同一个数据库,而我不不想在所有项目中重复这些。

问题:

任何人都可以指导我如何实现这一目标吗?我走在正确的轨道上吗?

我遇到了同样的问题

我通过执行以下操作解决了问题。

  1. 为所有共享依赖项创建 Class 库

  2. 在此 class 库中创建名为 AppSettings 的文件夹。将所有 json 配置存储在那里

  3. 然后我在这个名为 class 的库中创建了一个静态助手 class JsonConfiguration.cs 请参阅代码

     public static class JsonConfiguration
    {
    
    public static IConfiguration ConfigurationContainer { get; private set; }
    
    public static IConfiguration CreateConfigurationContainer()
    {
        var environment = string.Empty;
        try
        {
            environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
            _logger.Debug($"Found environment variable : {environment}");
            if (string.IsNullOrWhiteSpace(environment))
            {
                _logger.Debug($"Setting up Production appsettings.");
                //WE ARE IN PROD !!
                return ConfigurationContainer = new ConfigurationBuilder()
                    .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                    .AddJsonFile($"bin/AppSettings/appsettings.json").Build();
            }
    
            _logger.Debug($"Setting up {environment} appsettings.");
            return ConfigurationContainer = new ConfigurationBuilder()
                .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                .AddJsonFile($"bin/AppSettings/appsettings-{environment}.json").Build();
        }
        catch (Exception ex)
        {
            _logger.Fatal(ex, "{message} {environment}", "Failed Setting up Application Config.", environment);
            throw;
        }
    }
    

    }

确保您的 json 文件标记为 "Copy to output directory" 以便始终复制。

然后您可以在需要它的应用程序中注册 IConfiguration 并调用 JsonConfiguration.CreateConfigurationContainer(),我可能会将您的连接字符串映射到具体模型 class 并在需要的地方注入。希望这足以让你继续前进。