Как получить рут моего проекта в ASP.NET, а не местоположение IIS Express с помощью .CurrentDirectory ()? - PullRequest
0 голосов
/ 24 мая 2019

У меня есть проект ASP.NET Core, который я разрабатываю, и я использую LiteDB в качестве решения для базы данных. Чтобы создать экземпляр моей базы данных, мне нужно предоставить URI, чтобы программа знала, где создать базу данных.

Обычно я делаю что-то вроде System.Environment.CurrentDirectory(), чтобы найти текущий каталог, в котором я нахожусь, и изменить его, однако результат этой команды оказывается C:\program files\IIS Express или что-то подобное. В основном текущий каталог указывает на местоположение IIS Express.

Вместо этого я хочу получить корень моего проекта ASP.NET, расположение, в котором находятся моя папка контроллеров, appsettings.json, bin и obj.

Какую команду мне нужно использовать, чтобы получить строку, представляющую это местоположение? Я не хочу использовать жестко закодированную строку по понятным причинам.

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Возможно, вам лучше будет использовать выделенное местоположение (например, сетевой ресурс), а не папку, содержащую исполняемый код.Смешивание пользовательских данных с развернутым кодом сопряжено с множеством проблем:

  • Развертывания становятся более сложными, поскольку им необходимо учитывать наличие пользовательских данных.Это особенно верно, если вам нужно удалить существующий код во время развертывания.
  • Если пользовательские данные являются конфиденциальными, разработчикам может быть отказано в доступе для чтения развернутого кода.Это может значительно усложнить устранение неполадок.
  • Резервные копии развернутого кода будут содержать пользовательские данные, что означает, что они всегда будут отличаться, даже если ничего (с точки зрения кода) не изменилось.

Конечно, все это предполагает, что производственная среда настроена не так, как локальные машины разработчиков.

0 голосов
/ 24 мая 2019

Если у вас нет доступа к DI, вы можете попробовать:

Assembly.GetExecutingAssembly().Location

Если у вас есть доступ к DI, попробуйте следующее:

Введите IHostingEnvironment и позвоните environment.ContentRootPath

Как получить корневой каталог проекта в ядре asp.net.Directory.GetCurrentDirectory (), кажется, не работает правильно на Mac

...