dotnet/runtime

Json Configuration custom IFileProvider stopped working for .NET 5.0

クローズ

#47,455 opened on 2021/01/26

 (8 件のコメント) (0 件のリアクション) (0 人の担当者)C# (5,445 件のフォーク)batch import
area-Extensions-Configurationbughelp wanted

Repository metrics

Stars
 (17,886 個のスター)
PR merge metrics
 (平均マージ 12d 11h) (30d で 661 merged PRs)

説明

We built support for encrypted appsettings.json in our app by using encrypted xml support built into .NET. To integrate this we use JsonConfigurationSource with a custom File Provider to return custom IFileInfo with CreateReadStream overriden to decrypt file. Like code below:

public static IConfigurationBuilder AddJsonFileProtectedByEncryptedXml(this IConfigurationBuilder builder, string path, bool optional = false, ILoggerFactory loggerFactory = null)
{
    var source = new JsonConfigurationSource
    {
        Path = path,
        // Specify file provider to use so that JsonConfigurationSource can read the decrypted form of config file.
        // Note config file does not need to be XML, only the container that contains the config file should be XML.
        FileProvider = new EncryptedXmlContainerFileProvider(loggerFactory),
        Optional = optional
    };
    builder.Add(source);
    return builder;
}

After upgrading to .NET 5.0 this stopped working.

Workaround: return null from PhysicalFilePath in custom IFileInfo. https://github.com/dotnet/runtime/blob/9b9303678de0f5573fef580f3f52404ea0a20dd4/src/libraries/Microsoft.Extensions.Configuration.FileExtensions/src/FileConfigurationProvider.cs#L87

コントリビューターガイド