Предположим, у вас есть 2 основных проекта ASP.NET; API и веб-сайт. Я хочу подойти к этим локально (и одновременно, поскольку сайт использует api), используя следующие URL: devapi.website.com
и dev.website.com
.EADDRINUSE при использовании поддоменов
В настоящее время, я могу только получить эту работу, когда я указать другой номер порта для обоих проектов в файле Program.cs
(и с использованием указанного номера порта в браузере):
API
var host = new WebHostBuilder()
.UseUrls("http://devapi.website.com:81")
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
Сайт
var host = new WebHostBuilder()
.UseUrls("http://dev.website.com:82")
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
И в моих хозяев Файл:
127.0.0.1 devapi.website.com
127.0.0.1 dev.website.com
Если я указываю тот же номер порта (или, на самом деле, ни вообще - я не хочу использовать порт 80) в Program.cs
, один проект будет работать, а другой бросит
Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvException: Ошибка -4091 EADDRINUSE адрес уже используется
при запуске.
Как я могу запустить эти 2 проекта одновременно без указания разных номеров портов?
Нейт прав, это не работает. С Kestrel вы, как ожидается, будете использовать более или менее рандомизированные номера портов, потому что Kestrel не предназначен для прямой связи с Интернетом. Кестрел всегда должен использоваться за обратным прокси. Обратный прокси-сервер может использовать разные имена хостов на одном и том же порту и перенаправлять внутренний трафик (т. Е. Devapi.example.com на localhost: 5000 и dev.example.com на localhost: 5001). – Tseng
Однако вы можете использовать WebListener, веб-прослушиватель позволяет вам обмениваться портами (на тех же или разных хостах), но веб-прослушиватель работает только в Windows. Обратный прокси - это правильный сценарий для сценариев ядра .net/portable, если вам не нужна аутентификация Ntlm/windows, это работает только на веб-прослушивателе – Tseng