FileConfigurationProvider FileNotFoundException
Я пытаюсь загрузить ini-файл с помощью IniConfigurationProvider следующим образом (используя net core 3.1)
var config = @"D:\config.ini";
Console.WriteLine(File.Exists(config)); //true
var configProvider = new IniConfigurationProvider(
new IniConfigurationSource() {
Path = config
}
);
configProvider.Load();
но выдает исключение FileNotFoundException
Unhandled exception. System.IO.FileNotFoundException: The configuration file 'D:\config.ini' was not found and is not optional.
at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload)
at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load()
at MyProgram.Program.ThreadProc() in d:\apps\Program.cs:line 39
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
File.Exists
печатает true
, так почему же тогда это исключение?
2 ответа
IniConfigurationSource не поддерживает полный путь к файлу конфигурации. Вы должны использовать только имя файла. И добавьте поставщика файлов.
var configProvider = new IniConfigurationProvider(
new IniConfigurationSource() {
Path = "config.ini",
FileProvider = new PhysicalFileProvider("D:\\")
}
);
configProvider.Load();
Я предполагаю, что это ошибка, потому что перегрузка потока работает правильно
configProvider.Load(File.OpenRead(config));