mCasamento mCasamento - 17 days ago 5
Linux Question

Run Kestrel on bash on windows

I'm trying to run a simple web site on bash on windows (Windows Anniversary update bash) but I've been so far unsuccessfully.

I'm able to create and run console app, but whenever I type

dotnet run


on a web project, I get:

Unhandled Exception: System.AggregateException: One or more errors occurred. (Error -98 EADDRINUSE address already in use) ---> Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvException: Error -98 EADDRINUSE address already in use
at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.Check(Int32 statusCode)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvTcpHandle.GetSockIPEndPoint()
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.TcpListenerPrimary.CreateListenSocket()
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Listener.<>c.<StartAsync>b__6_0(Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.ListenerPrimary.<StartAsync>d__11.MoveNext()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelEngine.CreateServer(ServerAddress address)
at Microsoft.AspNetCore.Server.Kestrel.KestrelServer.Start[TContext](IHttpApplication`1 application)
at Microsoft.AspNetCore.Hosting.Internal.WebHost.Start()
at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host, CancellationToken token, String shutdownMessage)
at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host)
at WebApplication.Program.Main(String[] args)


Has anyone been successful in this? Am I asking too much of that "stripped-down-beta linux version"?

EDIT:

To reproduce the behavior, on a bash on windows prompt I type:

mkdir mytestwebsite
cd mytestwebsite
dotnet new -t web
dotnet restore
dotnet run


and then the problem appears.

Answer

The important part of that error message is this:

Error -98 EADDRINUSE address already in use

This is saying that something is already bound to the port you are trying to listen on. For example, if you are trying to run Kestrel and listen on port 80 (the default HTTP port) then Apache may also be already attached. You either need to shut down whatever is already listening on that port or change your app to pick a new port.