Как создать виртуальный каталог в Kestrel в процессе разработки приложения на ASP.NET Core в Visual Studio?

Как настроить проект asp.net core (в VS или VSCode), чтобы при локальной разработке Kestrel запускал приложение в виртуальном каталоге, а не в корне localhost?
  • 28 сентября 2023 г. 13:57
Ответы на вопрос 2
В Visual Studio и VS Code можно настроить проект ASP.NET Core для запуска через Kestrel в виртуальном каталоге следующим образом:

В Visual Studio:
1. Откройте файл запуска (например, `Program.cs`) и найдите метод `CreateHostBuilder`. 
2. Внутри метода `CreateHostBuilder` добавьте вызов `UseWebRoot("имя_каталога_виртуального_каталога")` после вызова `UseStartup<Startup>()`. Это укажет Kestrel использовать указанный виртуальный каталог вместо корневого каталога.
   Пример:
   ```csharp
   public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>().UseWebRoot("VirtualDirectory");
            });
   ```

3. Запустите приложение, и оно будет доступно по адресу `http://localhost:port/имя_виртуального_каталога`. 

В Visual Studio Code:
1. Откройте файл `launchSettings.json` в папке `.vscode` в корневом каталоге проекта.
2. Добавьте или измените атрибут `applicationUrl` для конфигурации запускающего профиля так, чтобы указать виртуальный каталог после порта. 
   Пример:
   ```json
   {
     "profiles": {
       "IIS Express": {
         "commandName": "IISExpress",
         "launchBrowser": true,
         "launchUrl": "VirtualDirectory",
         "environmentVariables": {
           "ASPNETCORE_ENVIRONMENT": "Development"
         }
       },
       "ProjectName": {
         "commandName": "Project",
         "launchBrowser": true,
         "applicationUrl": "https://localhost:5001/VirtualDirectory",
         "environmentVariables": {
           "ASPNETCORE_ENVIRONMENT": "Development"
         }
       }
     }
   }
   ```

3. Запустите проект с помощью команды `dotnet run` или нажатием клавиш `F5` или `Ctrl+F5`. Приложение будет доступно по адресу `https://localhost:port/имя_виртуального_каталога`.
UsePathBase используется для задания базового пути веб-приложения. Ссылка на документацию: https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.builder.usepathbase
Похожие вопросы