Принудительная пустельга в указанный порт - PullRequest
0 голосов
/ 03 июня 2018

Сначала я задам свой вопрос, а затем объясню, почему.

Как я могу указать, что мой сервер Kestrel не должен прослушивать порт, который ему сообщает .Net Core Module?

У меня есть это веб-приложение, написанное на .Net Core, и оно использует некоторую микросервисную архитектуру.Конечное веб-приложение предоставляет клиентам некоторые API-интерфейсы через сеть, но ему придется предоставить некоторые специальные API-интерфейсы для внутреннего использования микро сервисами.

Теперь я запускаю две службы Kestrel на двух разных портах, используяприведенный ниже код и указание двух разных портов:

public static IWebHost BuildWebHost(string[] args, ServerSettings settings)
{
    return WebHost.CreateDefaultBuilder(args).UseKestrel(
        (options) => AttachEndPoints(options, settings.HttpBindingPort)).
        UseStartup<HttpStartup>().Build();
}

protected static void AttachEndPoints(KestrelServerOptions options, int? port)
{
    var ip = IPAddress.Any;
    options.Listen(ip, port ?? 80)
}

Отлично работает как консольное приложение и все работает нормально.Но когда я запускаю приложение в IIS с использованием основного модуля ASP.Net, порт прослушивания основного модуля ASP.Net переопределяет мой собственный указанный порт, и обе конечные точки Http пытаются подключиться к одному и тому же случайному порту, что приводит к сбою системы.начать.

...