dotnet/runtime
Vedi su GitHubJson Configuration custom IFileProvider stopped working for .NET 5.0
Open
#47.455 aperta il 26 gen 2021
area-Extensions-Configurationbughelp wanted
Metriche repository
- Star
- (17.886 star)
- Metriche merge PR
- (Merge medio 12g 11h) (661 PR mergiate in 30 g)
Descrizione
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