5
votes

Kestrel incapable de démarrer

Lorsque je spécifie un port auquel se connecter avec .UseKestrel () , j'obtiens les erreurs listées ci-dessous .. mais si je supprime les options de Kestrel, tout fonctionne normalement si je vérifie l'API depuis mon navigateur.

J'ai essayé de me lier au port par défaut de mon application sans aucun port choisi et j'ai essayé de vérifier netstat pour éviter activement tout port en cours d'utilisation. Rien ne fonctionne à part la suppression complète des options. Cela n'est pas répliqué sur mon Mac ou sur une autre machine Windows 10. Cet appareil est Windows 10.

.UseKestrel(options =>
{
    options.Listen(IPAddress.Loopback, 50470);
    options.Listen(IPAddress.Any, 80);
})

: Microsoft.AspNetCore.Server.Kestrel[0]
Overriding address(es) 'http://localhost:50470/'. Binding to endpoints defined 
in UseKestrel() instead.
crit: Microsoft.AspNetCore.Server.Kestrel[0]
Unable to start Kestrel.
System.Net.Sockets.SocketException (10013): An attempt was made to access a 
socket in a way forbidden by its access permissions
at 
System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException
(SocketError error, String callerName)
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress 
socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransport.
BindAsync() at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer. 
<>c__DisplayClass21_01.<<StartAsync>g__OnBind|0>d.MoveNext() ` 


2 commentaires

Est-ce le même utilisateur sur les deux machines Windows? "... interdit par ses autorisations d'accès" pourrait pointer vers un paramètre de stratégie de groupe.


Ce n'est pas le cas, ce sont des ordinateurs entièrement différents et une autre personne exécutant le code.


4 Réponses :


-2
votes

Le problème était lié à la liaison supplémentaire du port 80, la mise à jour a corrigé le problème.


1 commentaires

êtes-vous en mesure d'expliquer ce que vous avez fait pour résoudre un peu mieux ce problème? Où avez-vous mis à jour la liaison? sur l'IIS?



1
votes

Lorsque vous exécutez une application ASP.NET Core directement via Kestrel , sans proxy inverse supplémentaire comme IIS ou nginx , vous devrez configurer correctement l'URL d'hébergement.

le problème venait du fait que vous n’aviez pas respecté la limitation de partage de port sur le serveur Web kesterl .

lorsque vous utilisez le serveur Web kestrel , vous devez définir le port unique sur app. (si vous utilisez le port 80 , assurez-vous aucune application n'utilise ce port). et votre application dispose également d'autorisations suffisantes.

plus d'infos:

https: // docs .microsoft.com / fr-fr / aspnet / core / fundamentals / servers / kestrel? view = aspnetcore-2.2

J'espère que c'est utile.


0 commentaires

12
votes

Vérifiez également la réponse de Darkthread ici: https://superuser.com/questions/1486417/unable-to-start-kestrel-getting-an-attempt-was-made-to-access-a-socket-in-a -way

Nous avons découvert qu'un port que nous utilisions depuis longtemps n'était plus accessible car il avait été réservé par Windows! Vous souhaiterez peut-être vérifier les ports réservés à l'aide de cette commande: netsh interface ipv4 show excluportrange protocol = tcp


2 commentaires

J'ai eu ce même problème et c'était la seule chose qui m'a aidé à le traquer. Pourquoi Windows définit-il maintenant de si grandes plages de réservations de port?


Oui, c'était la seule chose qui a aidé. Microsoft devrait documenter cela.



2
votes

Après Windows Update, certains ports sont réservés par Windows et les applications ne peuvent pas se lier à ces ports. veuillez vérifier cette commande pour le port interdit sur OS

interface netsh ipv4 show excluportrange protocol = tcp


0 commentaires