2

Я пытаюсь запустить простой веб-сайт в bash на окнах (обновление для Windows Anniversary update bash), но я до сих пор безуспешно.Run Kestrel on bash on windows

Я могу создать и запустить приложение консоли, но всякий раз, когда я печатаю

dotnet run 

на веб-проекта, я получаю:

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) 

Кто-нибудь был успешным в этом? Я прошу слишком много об этой «лишенной версии Linux»?

EDIT:

Чтобы воспроизвести поведение, на Баш на окнах подскажете я типа:

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

, а затем появляется проблема.

+0

Возможно, вы можете дать экспертам-читателям некоторый код для работы, так как вы говорите «Его не работает» ИМХО. Вы читали http://stackoverflow.com/help/mcve? Удачи. – shellter

+0

thanks @shellter, отредактировано – mCasamento

+0

Похоже, что этот порт уже используется. – ManoDestra

ответ

2

Важной частью этого сообщения об ошибке в следующем:

Ошибка -98 EADDRINUSE адрес уже используется

Это говорит, что что-то уже привязан к порту, который вы пытаетесь слушать на. Например, если вы пытаетесь запустить Kestrel и прослушивать порт 80 (HTTP-порт по умолчанию), то Apache также может быть подключен. Вам нужно либо закрыть все, что уже прослушивает этот порт, либо изменить приложение, чтобы выбрать новый порт.

+0

Я не могу объяснить, кто пользовался портом 5000 (порт по умолчанию для kestrel, кажется свободным), но после некоторых случайных попыток с 5001 и 5050 случайный «5123» работал. Итак, я думаю, вы правы, спасибо – mCasamento

+0

Попробуйте запустить 'netstat', который должен отображать все порты. Не уверен, что это связано с Bash на Windows ... – DavidG

+0

уже пробовал, но ничего не показывает. попробовал то же самое и на хосте Windows, так как они поделились одним и тем же адресом, но опять же не повезло. Это все еще мистерия для меня, но я рад, что по крайней мере я могу запускать пустельгу без виртуальной машины, используя одну и ту же файловую систему и т. Д. В конце концов, это бета-материал – mCasamento