#c# #.net #asp.net-core
#c# #.net #asp.net-core
Вопрос:
У меня есть несколько файлов json, которые мне нужно прочитать из моего asp.net основное приложение. Они находятся в папке под названием data
--MyProject
---Startup.cs
---Data
------dataset1.json
------dataset2.json
Я использую IHostingEnvironment ContentRootPath для чтения файлов:
string pathToFile = hostingEnvironment.ContentRootPath
Path.DirectorySeparatorChar
"Data"
Path.DirectorySeparatorChar
"dataset1.json"
который возвращает C:SourceControlTest.BackendsrcTest.WebDatadataset1.json
Это отлично работает, когда я публикую свой код в IIS. Однако, когда я выполняю отладку, файлы копируются в папку bin, и приведенный выше код не работает. Как я могу читать файлы во время отладки?
Ответ №1:
#if DEBUG
string pathToFile = hostingEnvironment.ContentRootPath
Path.DirectorySeparatorChar
"bin"
Path.DirectorySeparatorChar
"Data"
Path.DirectorySeparatorChar
"dataset1.json"
#else
string pathToFile = hostingEnvironment.ContentRootPath
Path.DirectorySeparatorChar
"Data"
Path.DirectorySeparatorChar
"dataset1.json"
#endif
при таком подходе у вас могут быть два разных пути, когда вы находитесь в режиме отладки и в рабочей среде. Просто измените первый путь в соответствии с вашими потребностями
Комментарии:
1. Это то, что я имел в виду, но я хотел избежать этого решения с помощью переменных условной компиляции
2.
Path.Combine
метод является более стандартным и легким для объединения частей пути (и, вероятно, также немного более эффективным).