Я инициализирую System.IO.StreamReader, передавая строку, содержащую путь UNC, но ctor StreamReader добавляет префикс UNC к рабочему каталогу, что приводит к исключению System.IO.DirectoryNotFoundException.
UNC-путь хранится в applicationSettings со значением:
\\networkShareMachine\Projects\hold\tst.csv
Я получаю UNC из applicationSettings, используя это:
public static object GetValue(string settingName)
{
object result = null;
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// find section
ClientSettingsSection configSection = config.SectionGroups[@"applicationSettings"].Sections["VCM.WPF.Properties.Settings"] as ClientSettingsSection;
var setting = configSection.Settings.Get(settingName).Value.ValueXml.InnerText;
result = setting;
return result;
}
}
Intellisense сообщает мне значение "переменная "setting" является правильной, за исключением случаев с удвоенными обратными слешами:
string setting = (string)Utils.SettingsReader.GetValue("CSVLocation");
\\\\networkShareMachine\\Projects\\hold\\tst.csv
Затем я запускаю StreamReader, передавая значение UNC в ctor:
using (var streamReader = new StreamReader(path: setting))
{
...
}
Я ожидаюпотоковый ридер должен быть инициализирован так же, как и в любое другое время, за исключением того, что я получаю
System.IO.DirectoryNotFoundException.
Причина в том, что UNC имеет префикс рабочего каталога следующим образом:
'C:\Users\userName\source\repos\VCM\VCM.Models.Test\bin\Debug\\networkMachineName\Projects\hold\tst.csv'
Кажется, что StreamReader ctor является префиксом самой строки.Почему он это делает и как я могу предотвратить это?