ASP. NET Core 3.1 Web Root Путь - PullRequest
       12

ASP. NET Core 3.1 Web Root Путь

0 голосов
/ 09 марта 2020

Я помещаю внешний файл в папку wwwroot моего приложения ASP. NET Core 3.1. Мне нужно сослаться на путь для предоставления переменной конструктора во время подключения служб.

В классе запуска я добавил IWebHostEnvironment к параметрам конструктора:

public Startup(IConfiguration configuration, IWebHostEnvironment env)
{
  Configuration = configuration;
  _env = env;
}

При отладке он Кажется, что _env.WebRootPath возвращает путь в том виде, в котором он находится в моей исходной папке, а не исполняемый путь, то есть

Возвращает: <path to my source code>/wwwroot

Вместо относительного пути выполнения: <path to my source code>/bin/Debug/netcoreapp3.0/wwwroot

Как получить верный относительный путь выполнения?

Ответы [ 2 ]

3 голосов
/ 09 марта 2020

Может быть попробовать что-то вроде следующего:

var rootDir  = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;

Для получения дополнительной информации / помощи взгляните на эту статью: Получение Root Путь к каталогу для. Net Основные приложения

1 голос
/ 09 марта 2020

Это потому, что по умолчанию путь к содержимому - root - это каталог, в котором находится проект, а не его выходные данные.

Если вы хотите изменить это поведение, вы должны вызвать эту строку при построении web-host.

.UseContentRoot(AppContext.BaseDirectory);

Тогда путь изменится на <ProjectPath>\Debug\netcoreapp3.1 или на то, что вы компилируете.

...