У меня есть asp. net core 2.1 приложение, которое использует Kestrel для настройки веб-сервера. Чтобы улучшить взаимодействие с пользователем, при запуске приложения я также запускаю Chrome. Но в последнее время я получаю эту ошибку при отладке:
System.IO.IOException: Failed to bind to address https://127.0.0.1:1985: address already in use. --->
Microsoft.AspNetCore.Connections.AddressInUseException: Only one usage of each socket address (protocol/network address/port) is normally permitted --->
System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted
И единственный способ предотвратить это - убедиться, что любой существующий экземпляр Chrome закрыт перед запуском приложения.
Я убедился, что перед запуском отладчика / приложения мое приложение не запускается через диспетчер задач.
Вот код, который устанавливает сервер:
var hostUrl = "https://company.site.com:1980/";
var host = new WebHostBuilder()
.UseKestrel(options =>
{
options.Listen(IPAddress.Parse("127.0.0.1"), 1980, listenOptions =>
{
listenOptions.UseHttps("Cert.pfx", "NotReal123");
});
})
.UseUrls(hostUrl)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseShutdownTimeout(TimeSpan.FromSeconds(60))
.Build();
host.Start();
Мое лучшее предположение заключается в том, что Chrome активно поддерживает этот порт открытым, есть ли способ закрыть соединение при сбое / закрытии приложения?