Ask questions Unable to start Kestrel - port 8000 already in use

<!-- Please search existing issues to avoid creating duplicates. -->

<!-- Which version of Electron.NET CLI and API are you using? --> <!-- Please always try to use latest version before report. -->

  • Version: ElectronNET.CLI Version:

<!-- Which version of .NET Core and Node.js are you using (if applicable)? -->

➜  electron-v5 git:(master) ✗ node -v
➜  electron-v5 git:(master) ✗ npm -v

<!-- What target are you building for? -->

  • Target: Mac OSX

<!-- Enter your issue details below this comment. --> <!-- If you want, you can donate to increase issue priority ( -->

Steps to Reproduce:

  1. Follow readme to create basic application
  2. Run electronize start
  3. Receive error:
➜  electron-v5 git:(master) ✗ electronize start
Start Electron Desktop Application...
Microsoft (R) Build Engine version 15.9.20+g88f5fadfbe for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
  Restore completed in 49.16 ms for /Users/rosenbek/Desktop/csharp/electron-v5/electron-v5.csproj.
  electron-v5 -> /Users/rosenbek/Desktop/csharp/electron-v5/bin/Debug/netcoreapp2.2/osx-x64/electron-v5.dll
  electron-v5 -> /Users/rosenbek/Desktop/csharp/electron-v5/bin/Debug/netcoreapp2.2/osx-x64/electron-v5.Views.dll
  electron-v5 -> /Users/rosenbek/Desktop/csharp/electron-v5/obj/Host/bin/
node_modules missing in: /Users/rosenbek/Desktop/csharp/electron-v5/obj/Host/node_modules
Start npm install...
up to date in 10.931s
ElectronHostHook handling started...
Invoke electron - in dir: /Users/rosenbek/Desktop/csharp/electron-v5/obj/Host/node_modules/.bin
Electron Socket IO Port: 8000
Electron Socket started on port 8000 at
ASP.NET Core Port: 8000
stdout: Use Electron Port: 8000
ASP.NET Core Application connected... global.electronsocket EKbRPQpPh_WrAD8AAAAA 2019-05-29T13:21:26.705Z
stdout: crit: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to start Kestrel.
System.IO.IOException: Failed to bind to address address already in use. ---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use ---> System.Net.Sockets.SocketException: Address already in use
   at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName)
   at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.Sockets.Socket.Bind(EndPoint localEP)
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransport.BindAsync()
   --- End of inner exception stack trace ---
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransport.BindAsync()
   at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.<>c__DisplayClass21_0`1.<<StartAsync>g__OnBind|0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context)
   --- End of inner exception stack trace ---
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context)
   at Microsoft.AspNetCore.Server.Kestrel.Core.LocalhostListenOptions.BindAsync(AddressBindContext context)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.AddressesStrategy.BindAsync(AddressBindContext context)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindAsync(IServerAddressesFeature addresses, KestrelServerOptions serverOptions, ILogger logger, Func`2 createBinding)
   at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)

After receiving the error, I can inspect the process and see that the only thing running on port 8000 is the Electron.NET app itself:

➜  electron-v5 git:(master) ✗ lsof -t -i :8000         
➜  electron-v5 git:(master) ✗ ps -p 4474      
  PID TTY           TIME CMD
 4474 ttys001    0:00.38 /Users/rosenbek/Desktop/csharp/electron-v5/obj/Host/node_modu

So it appears that somehow the app is detecting 8000 is open, and then another part of the process looks to use 8000 even though it isn't open?

The only variable in this that makes me think it is potentially something nefarious is that I am on a work VPN. It appears that as long as I am connected to work VPN, Electron.NET misdiagnoses open ports.

Is there anything in the source obvious to you which might fail to detect open port properly? It seems to me like maybe Socket IO chooses to use 8000, and then ASP.NET tries to use it right after:

Electron Socket IO Port: 8000
Electron Socket started on port 8000 at
ASP.NET Core Port: 8000
stdout: Use Electron Port: 8000

Answer questions GregorBiswanger

Thank you for the flowers!

We are always happy for a star if someone likes it! Also a donation helps us more intensively to deal with the project :)

Gregor Biswanger GregorBiswanger Germany Microsoft MVP, Intel Black Belt & Intel Software Innovator - is freelancer as consultant, author, speaker & trainer.
Github User Rank List