проблема с запуском проекта dotnet core webapi

#asp.net-core #port #asp.net-core-webapi #dotnet-cli

Вопрос:

создал пример проекта с помощью команды «dotnet new webapi», затем удалил Properties/launchSettings.json(чтобы понять, что произойдет, если этот файл отсутствует). При запуске проекта с помощью команды «запуск dotnet» проект запускается, но при доступе к URL — адресу- https://localhost:5001/swagger/index.html, я получаю ОШИБКУ HTTP 404. Но если я запущу тот же проект в режиме отладки(нажмите f5), я получу страницу swagger. Никаких изменений в коде или настройках не было сделано, при запуске через «запуск dotnet» или f5, во время «запуска dotnet»не было получено никаких ошибок. Не в состоянии понять следующее:

  • почему 2 разных поведения при запуске кода с использованием описанных выше шагов
  • причина, по которой я удалил launchsettings.json, заключалась в том, чтобы определить, какие другие настройки заставляют использовать порт 5000/5001 и протокол http/https.

Заранее спасибо

Ответ №1:

Я не понимаю того поведения, которое вы наблюдаете. И ASP.NET Основной проект, созданный с нуля, по умолчанию прослушивается 5000 и 5001 переносится даже без launchSettings.json .

Тем не менее, у вас есть несколько вариантов, чтобы установить, какие адреса ASP.NET Основное приложение будет прослушивать:

Из статьи Эндрю Локка. Также из документов

  • UseUrls() Установите URL-адреса для статического использования в Program.cs
  • Переменные среды — Задайте URL-адреса с помощью DOTNET_URLS или ASPNETCORE_URLS .
  • Аргументы командной строки — Задайте URL-адреса с --urls параметром при запуске из командной строки.
  • Использование launchSettings.json — Задайте URL-адреса с помощью applicationUrl свойства.
  • KestrelServerOptions.Listen() — Настройте адреса для сервера Kestrel вручную с помощью Listen() .

dotnet run команда проверяет launchSettings.json конфигурацию, если она ничего не находит, она пробует еще пару вещей, прежде чем разрешить Kestrel использовать свои порты по умолчанию :5000 и :5001 для http и https соответственно.