Резюме: оно работает как dotnet run
, но оно не работает как dotnet myappname.dll
.Ошибка Kestrel: адрес уже используется (ядро dotnet)
Мои Linux навыки ограничены, но я стараюсь идти по книге, так что я не перепутать вещи (после this tutorial от Скотта Hanselman):
$ cd /home/myusername/dotnettest
$ dotnet run
Now listening on: http://localhost:5123
Тогда я переместить его/вар так:
$ sudo cp -a /home/myusername/dotnettest/bin/Debug/netcoreapp1.1/publish /var/dotnettest
Наконец я могу проверить, если он работает там же:
$ dotnet dotnettest.dll
Тогда он не:
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)
Я был осторожен в попытке остановить Nginx.
Я проверил, если что-нибудь слушает: 5123 с командой:
$ lsof -i tcp:5123
И ничего, кажется, придумать.
После 'sudo netstat -ltp' Я видел, что процесс' dotnet' постоянно прослушивается: 5000 (я что-то упустил? Я не думаю, что это фоновый процесс по умолчанию делает это). Итак, я повторяю 'dotnet dotnettest.dll', и он работает ... но он слушает: 5000 (вместо: 5123). Мне нужно будет проверить, что я сделал неправильно, но похоже, что он учитывает изменения, внесенные в «Program.cs» (это странно, потому что «dotnet run» слушал: 5123, как ожидалось). –