如何列出ASP.NET Core中的所有配置源或属性?

Ben*_*ein 4 .net c# asp.net .net-core asp.net-core

我想确保从配置源中读取特定的配置属性.我打算打印出所有配置源(或打印出所有配置属性),但我似乎无法弄清楚如何做到这一点.

可以这样做吗?

And*_*Cox 39

从 .NET Core 3.0+ 开始,您可以将您的转换IConfiguration为 aIConfigurationRoot并使用GetDebugView扩展方法。这将生成一个人类可读的配置视图,显示每个值的来源。例如

var root = (IConfigurationRoot)Configuration;
var debugView = root.GetDebugView();
Run Code Online (Sandbox Code Playgroud)

示例输出到debugView

applicationName=Project.Name (Microsoft.Extensions.Configuration.ChainedConfigurationProvider)
ASPNETCORE_ENVIRONMENT=Development (EnvironmentVariablesConfigurationProvider)
ASPNETCORE_HTTPS_PORT=32774 (EnvironmentVariablesConfigurationProvider)
ASPNETCORE_LOGGING:
  CONSOLE:
    DISABLECOLORS=true (EnvironmentVariablesConfigurationProvider)
ASPNETCORE_URLS=https://+:443;http://+:80 (EnvironmentVariablesConfigurationProvider)
DOTNET_RUNNING_IN_CONTAINER=true (EnvironmentVariablesConfigurationProvider)
DOTNET_USE_POLLING_FILE_WATCHER=1 (EnvironmentVariablesConfigurationProvider)
AllowedHosts=* (JsonConfigurationProvider for 'appsettings.json' (Required))
Kestrel:
  Certificates:
    Development:
      Password=xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxx (JsonConfigurationProvider for 'secrets.json' (Optional))
EmailOptions:
  EnableSsl=False (JsonConfigurationProvider for 'appsettings.json' (Required))
ENVIRONMENT=Development (Microsoft.Extensions.Configuration.ChainedConfigurationProvider)
HOME=/root (EnvironmentVariablesConfigurationProvider)
HOSTNAME=2cb0f5c24cc0 (EnvironmentVariablesConfigurationProvider)
HTTPS_PORT=32774 (Microsoft.Extensions.Configuration.ChainedConfigurationProvider)
NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages;/root/.nuget/fallbackpackages2 (EnvironmentVariablesConfigurationProvider)
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin (EnvironmentVariablesConfigurationProvider)
PWD=/app (EnvironmentVariablesConfigurationProvider)
RUNNING_IN_CONTAINER=true (Microsoft.Extensions.Configuration.ChainedConfigurationProvider)
URLS=https://+:443;http://+:80 (Microsoft.Extensions.Configuration.ChainedConfigurationProvider)
USE_POLLING_FILE_WATCHER=1 (Microsoft.Extensions.Configuration.ChainedConfigurationProvider)
Run Code Online (Sandbox Code Playgroud)

  • 我希望 `GetDebugView()` 能够返回配置树的结构化/可枚举对象图视图,而不是平面字符串 - 幸运的是,`GetDebugView` 很容易重新实现。 (5认同)

Nat*_*ini 7

您可以通过执行以下操作获取所有配置源发现的所有密钥的列表:

var keys = builder.Build().AsEnumerable().ToList();
Run Code Online (Sandbox Code Playgroud)

我没有找到单独构建每个配置源的方法,因此您可以单独查看源.

在调试模式下,您可以看到私有成员并查看每个配置源:

调试配置提供程序