Kestrel-Fehler: address already in use (dotnet-core)

Zusammenfassung: es funktioniert wie dotnet run, aber es funktioniert nicht wie dotnet myappname.dll.

Meine linux-Kenntnisse sind begrenzt, aber ich versuche zu gehen durch das Buch, damit ich nicht alles Durcheinander (nach dieses tutorial von Scott Hanselman):

$ cd /home/myusername/dotnettest
$ dotnet run

Horcht nun auf: http://localhost:5123

Dann Verschiebe ich es nach /var etwa so:

$ sudo cp -a /home/myusername/dotnettest/bin/Debug/netcoreapp1.1/publish /var/dotnettest

Ich endlich testen, ob es funktioniert dort auch:

$ dotnet dotnettest.dll

Dann scheitert es:

info: Microsoft.Extensions.DependencyInjection.DataProtectionServices[0]
      User profile is available. Using '/home/myusername/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest.

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.TcpListener.CreateListenSocket()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Listener.<>c.<StartAsync>b__6_0(Object state)
   --- 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) in /home/myusername/dotnettest/Program.cs:line 27
Aborted (core dumped)

Ich habe vorsichtig versucht zu stoppen nginx.

Habe ich kontrolliert, ob irgendetwas hören :5123 mit dem Befehl:

$ lsof -i tcp:5123

Und nichts scheint zu kommen.

  • Nach einer sudo netstat -ltp ich habe gesehen, dass es eine dotnet Prozess dauerhaft hören :5000 (ließ ich etwas laufen? Ich glaube nicht, dass es ein Standard-hintergrund-Prozess, dies zu tun). Ich dann also wiederholen dotnet dotnettest.dll und es funktioniert... aber es hört :5000 (statt :5123). Ich werde schauen, was ich falsch gemacht habe, aber wie es aussieht ist unter Berücksichtigung der änderungen, die ich in Program.cs (es ist komisch, weil dotnet run hörte :5123 wie erwartet).
InformationsquelleAutor Xavier Peña | 2017-01-14
Schreibe einen Kommentar