dotnet/runtime
GitHub で見るJson Configuration custom IFileProvider stopped working for .NET 5.0
Open
#47,455 opened on 2021年1月26日
area-Extensions-Configurationbughelp wanted
Repository metrics
- Stars
- (17,886 stars)
- 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