2

J'essaye d'exécuter un site Web simple sur bash sur Windows (bash de mise à jour d'anniversaire de Windows) mais j'ai été jusqu'ici sans succès.Exécuter Kestrel sur bash sur windows

Je suis en mesure de créer et exécuter l'application de la console, mais chaque fois que je tape

dotnet run 

sur un projet Web, je reçois:

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) 

Quelqu'un at-il réussi à ce sujet? Est-ce que je demande trop de cette version "dépouillée de la version bêta de Linux"?

EDIT:

Pour reproduire le comportement, sur une bash fenêtre d'invite de type I:

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

et le problème apparaît.

+0

peut-être que vous pouvez donner aux lecteurs experts du code pour travailler avec, comme, vous dites "ça ne fonctionne pas" à mon humble avis. Avez-vous lu http://stackoverflow.com/help/mcve? Bonne chance. – shellter

+0

merci @shellter, édité – mCasamento

+0

On dirait que ce port est déjà utilisé. – ManoDestra

Répondre

2

La partie importante de ce message d'erreur est la suivante:

Erreur -98 adresse EADDRINUSE déjà utilisé

Cela revient à dire que quelque chose est déjà lié au port que vous essayez d'écouter sur. Par exemple, si vous essayez d'exécuter Kestrel et d'écouter sur le port 80 (le port HTTP par défaut), Apache peut également être déjà connecté. Vous devez soit arrêter tout ce qui est déjà en écoute sur ce port, soit changer votre application pour choisir un nouveau port.

+0

Je ne peux pas expliquer qui utilisait le port 5000 (port de kestrel par défaut, semble libre), mais après quelques essais aléatoires avec 5001 et 5050 le "5123" aléatoire a fonctionné. Donc je suppose que vous avez raison, merci – mCasamento

+0

Essayez d'exécuter 'netstat', qui devrait lister tous les ports. Je ne sais pas si cela vient avec Bash sur Windows ... – DavidG

+0

déjà essayé, mais il ne montre rien. essayé la même chose aussi sur l'hôte des fenêtres, car ils partageaient la même adresse, mais encore une fois pas de chance. C'est toujours un mystère pour moi mais je suis content qu'au moins je puisse lancer Crécerelle sans machine virtuelle, partager le même système de fichiers, etc. – mCasamento