Почему Kestrel не слушает указанный порт?

Я пытаюсь создать веб-приложение с помощью пустельги. В этой статье https://docs.microsoft.com/pl-pl/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x есть объяснение, как использовать пустельгу (код ниже):

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .UseKestrel(options =>
    {
        options.Listen(IPAddress.Loopback, 5000);
    })
    .Build();

IIS по умолчанию запускает порт 49950, но порт 5000 не прослушивается. Почему это не работает? Я что-то упускаю? Я хочу заставить пустельгу слушать 5000 только из кода (без вмешательства в другие файлы проекта). Также UseUrls неприемлем из-за отсутствия поддержки SSL. Как я могу этого добиться?


person Adam Mrozek    schedule 18.04.2018    source источник
comment
Вы запускаете приложение из Visual Studio? Вам необходимо изменить запускаемое приложение для отладки. В строке меню, где, скажем, IIS Express, щелкните маленькую кнопку раскрывающегося списка рядом с ним и выберите имя своего проекта. Это запустит программу как консольное приложение и разместит Kestrel на указанном вами порту.   -  person Simply Ged    schedule 18.04.2018
comment
Да, работает :) Спасибо! Кстати, почему запуск IIS не запускает пустельгу на указанный мною порт? Это нужно где-то поменять?   -  person Adam Mrozek    schedule 18.04.2018
comment
Не уверен, что вы имеете в виду под отсутствующей поддержкой SSL, Kestrel 2.x действительно поддерживает SSL и регулирование (и теперь может также использоваться как приложение для выхода в Интернет - то, что не рекомендовалось с Kestrel 1.x, из-за отсутствия полноценных функций. )   -  person Tseng    schedule 18.04.2018


Ответы (1)


Kestrel - это порт, используемый приложением. IIS Express служит своего рода обратным прокси-сервером.

Если вы хотите получить доступ к порту, настроенному с помощью пустельги, вы должны запустить его как консольное приложение. Нажмите кнопку раскрывающегося списка рядом с кнопкой запуска и выберите YourCompany.YourApplication.Mvc (или как там называется ваш проект) вместо «IIS Express». Затем нажмите «Пуск», и приложение запустится, появится окно консоли.

Сохраните его и затем запустите приложение / отладку.

Если вы все еще хотите использовать IIS-Express (потому что вы хотите разместить его на IIS и хотите более близкого к нему опыта), перейдите в свойства проекта, выберите вкладку «Отладка», выберите профиль «IIS Express» в раскрывающемся списке. вниз, а затем измените «URL-адрес приложения». Это обновит файл launchSettings.json и конфигурацию IIS Express (.vs/config/applicationhost.config) с новым портом.

Я бы настоятельно не советовал вручную редактировать launchSettings.json файл, так как это может оставить applicationhost.config нетронутым (который действительно определяет порт, launchSettings.json просто сообщает IDE, какой URL открыть в браузере).

Если по какой-либо причине ваши URL-адреса в launchSettings.json / applicationhost.config не синхронизированы, вы можете вручную отредактировать applicationhost.config или просто удалить его (папка .vs обычно скрыта, вам может потребоваться сначала показать скрытые папки в проводнике ), и он будет воссоздан при следующем открытии решения и / или запуске приложения.

person Tseng    schedule 18.04.2018