#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 соответственно.