dotnet/runtime
在 GitHub 查看Json Configuration custom IFileProvider stopped working for .NET 5.0
Open
#47,455 创建于 2021年1月26日
area-Extensions-Configurationbughelp wanted
仓库指标
- Star
- (17,886 star)
- PR 合并指标
- (平均合并 12天 11小时) (30 天内合并 661 个 PR)
描述
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