"Impossible de lancer le serveur Web IIS Express." dans Visual Studio

106

J'ai tenté d'exécuter mon service Web via Visual Studio. J'ai rencontré un problème comme:

---------------------------
Microsoft Visual Studio
---------------------------
Unable to launch the IIS Express Web server.

Failed to register URL "http://localhost:63591/" for site "xxxxxx" application
"/". Error description: The process cannot access the file because it is being
used by another process. (0x80070020)

---------------------------
OK   
---------------------------

J'ai vu le gestionnaire de tâches et j'ai trouvé que PID 4 est utilisé par le système et sa description est NT Kernel & System. donc j'ai essayé d'arrêter le http service. Tous les services de dépendance se sont arrêtés. Mais je suis confronté à un problème pour arrêter le service http comme

The service is starting or stopping.  Please try again later.

J'ai donc essayé d'arrêter et de démarrer le service manuellement. Mais le processus de fin est désactivé. Il sera utile que quelqu'un puisse vous aider avec ce problème

Priya
la source
1
voir le problème après la mise à jour de Windows 10: developercommunity.visualstudio.com/content/problem/580466/…
Xiao

Réponses:

129

De https://www.davidsalter.co.uk/unable-to-launch-the-iis-express-web-server-error-0x80070020/

Le code d'erreur 0x80070020signifie que ERROR_SHARING_VIOLATION, dans le cas d'IIS Express (ou IIS), cela signifie que le port sur lequel il tente d'écouter est utilisé par un autre processus.

Utilisez la netstatcommande pour savoir quelle application utilise le port.

netstat -ao | findstr <port_number_to_search_for>

Le aparamètre indique à netstat d'afficher toutes les connexions et tous les ports d'écoute.

Le oparamètre indique à netstat d'afficher l'ID de processus associé à la connexion.

L'exécution de la commande netstat ci-dessus produira une sortie telle que:

C:\>netstat -ao | findstr 4026
TCP    12.0.0.1:4026        cs-pc:4026         LISTENING       9544

Le dernier numéro affiché (ici 9544) est l'ID de processus.

Chris Schiffhauer
la source
11
Très bonne réponse! Non seulement vous décrivez la solution, mais vous incluez également la signification des paramètres. J'aimerais que toutes les réponses soient comme ça!
Christian Payne
8
Cela m'a aidé, et il s'est avéré que le PID incriminé était Chrome.exe. J'ai redémarré Chrome et le problème a disparu.
astrosteve
1
Très bonne réponse. En utilisant cela, j'ai trouvé que skype écoutait à la fois sur le port 80 et le port 443. J'ai tué skype et j'ai ensuite pu lancer iisexpress comme d'habitude, montrant maintenant mes liaisons supplémentaires pour les ports 80 et 443
Alastair
3
exécuter dans une fenêtre cmd élevée TASKKILL /PID 2756 /Fremplacez 2756par votre ID de processus
stackoverfloweth
12
Cela peut également être considérablement plus rapide avec le -ncommutateur - il utilise une sortie "numérique", ce qui signifie qu'il ne perd pas de temps à interroger le DNS afin de résoudre les adresses IP en noms d'hôtes.
Tullo_x86
46

J'ai eu un problème similaire en essayant d'exécuter un projet à partir de Visual Studio 2019 sur Windows 10. L'application n'a pas pu démarrer car le port était apparemment utilisé par un autre processus. Cependant, la netstatcommande a montré que le port n'était utilisé par aucune application.

Après avoir passé 2 jours sur Google, j'ai trouvé une solution qui a fonctionné pour moi. Le port que j'essayais d'utiliser était dans la plage de ports exclus que vous pouvez voir en exécutant la commande:

netsh interface ipv4 show excludedportrange protocol=tcp

Les coupables qui ont réservé ces ports dans mon cas étaient Docker pour Windows et Hyper-V

La solution

J'ai désinstallé Docker (car je n'en avais pas besoin) et désactivé Hyper-V. Pour désactiver Hyper-V: Accédez à: Panneau de configuration-> Programmes et fonctionnalités-> Activer ou désactiver les fonctionnalités Windows. Décochez Hyper-V et redémarrez l'ordinateur.

Après le redémarrage, la commande netsh interface ipv4 show excludedportrange protocol=tcpn'a montré aucun port réservé.

J'ai ensuite ajouté le port de mon application à la plage de ports exclus en exécutant la commande suivante à partir d'une ligne de commande élevée:

netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent

Ensuite, j'ai réactivé Hyper-V (Docker peut être réinstallé si nécessaire) et redémarré l'ordinateur à nouveau.

Hyper-V réservait désormais ses ports sans interférer avec le port utilisé par mon application: Plages de ports réservés

Philip Trenwith
la source
Cela a fonctionné pour moi, sauf que j'ai besoin de Docker, donc je l'ai simplement désactivé au démarrage au lieu de le désinstaller.
cderrick le
2
J'ai fini par changer mon port hors de la plage exclue .. mais CELA m'a fait gagner beaucoup de temps. Je vous remercie.
Cory le
2
Comme @Cory, j'ai changé mon port en vs pour qu'il soit quelque chose en dehors des plages, ennuyeux car maintenant je dois changer les applications de référencement à chaque fois que je fais cela, mais mieux qu'un redémarrage complet.
Nick Rubino le
Je cherchais ça depuis des années . Je me demande s'il existe un moyen de déterminer exactement quelle application a volé mes ports? Merci.
Simon Mourier
La désactivation d'Hyper-V et le redémarrage l'ont corrigé pour moi
Kyle Burkett
30

J'ai eu le même problème. Je viens de redémarrer Visual Studio et cela a fonctionné.

MusicAndCode
la source
1
Mon ordinateur avait redémarré à partir des mises à jour et netstat n'a montré aucun processus utilisant le port. C'était la seule solution qui fonctionnait. Merci!
goodies4uall
1
a dû redémarrer ma machine aussi
Mahmoud Hboubati
De manière surprenante, le redémarrage de Visual Studio (2017) a également fonctionné pour moi. Merci!
Thomas Gassmann
Dans mon cas, ma boîte Windows 10 a affiché un écran bleu et j'ai dû redémarrer deux fois . D'autres projets de site Web ont bien fonctionné (port local différent), et aucune des autres réponses ici n'a fonctionné. La modification du port du projet ne l'a pas corrigé non plus. Il doit y avoir une autre configuration dans IIS Express lui-même.
Granger
Il semble que cela m'arrive chaque fois que je lance un projet dans VS 2019 avec le débogage à l'aide de F5, puis que j'essaye plus tard de l'exécuter sans débogage en utilisant Ctrl + F5, ce qui est le cas quand il échoue. Un redémarrage le corrige, bien que j'aimerais pouvoir l'empêcher de se produire en premier lieu.
pwhe23
28

J'ai eu le même problème. Comme @Kautsky Lozano le mentionne ci-dessus, une autre application utilise ce port.

Donc [pour un système d'exploitation Windows] simplement:

  • Ouvrir le moniteur de ressources (Gestionnaire de tâches -> Performances -> Ouvrir le moniteur de ressources)
  • Cliquez sur l' onglet Réseau .
  • Et sur Connexions TCP, recherchez l'application qui utilise le port local utilisé par IIS Express et fermez-la. (c'était Firefox sur mon cas)
Zoti
la source
A parfaitement fonctionné!
Al Belmondo
12

J'ai rencontré le même problème après avoir mis à niveau une solution de Visual Studio 2012 à 2015. J'étais venu ici et j'ai couru netstatuniquement pour constater qu'aucune autre application n'utilisait les mêmes ports. Il s'avère que j'avais les mêmes sites avec les mêmes ports mappés dans applicationhost.configat Users/<username>/Documents/IISExpress/configet applicationhost.configdans le .vsdossier à l'intérieur de ma solution. Je dois noter que le problème n'a pas commencé juste après la mise à niveau. Cela commence juste à échouer systématiquement un matin. Quelques redémarrages ne semblent pas non plus résoudre le problème.

La suppression des sites en conflit de celui stocké dans mes documents et le redémarrage de Visual Studio ont résolu le problème.

Steve Haselschwerdt
la source
Cela m'a aidé: le applicationhost.configest dans le .vs\configdossier sous votre dossier de solution.
Erik Oppedijk
6

Si netstat ne montre rien qui utilise déjà le port

netstat -ano | findstr <your port number>

Le port peut être exclu, essayez cette commande pour voir si la plage est bloquée par autre chose:

netsh interface ipv4 show excludedportrange protocol=tcp

Vous pouvez essayer de débloquer la plage du port de démarrage pour un certain nombre de ports (nécessite l'invite de commande avec l'administrateur):

netsh int ip delete excludedportrange protocol=tcp numberofports=<number of ports> startport=<start port>

Pour moi, je ne pouvais pas les débloquer, je viens de recevoir "Accès refusé", donc j'ai fini par devoir choisir un autre port pour mon site.

John Leonard
la source
3

J'ai juste eu ce problème même si netstat n'a montré aucun conflit.

Ce qui suit l'a corrigé pour moi:

  1. Fermer Visual Studio
  2. Ouvrez l'explorateur de fichiers
  3. Accédez au dossier du projet incriminé
  4. Supprimer le obj et bin dossiers
  5. Supprimer le * .user fichier (ceci est probablement facultatif)
  6. Redémarrez Visual Studio et réessayez
AaronK
la source
3

Après la mise à jour de Windows 10 et / ou Visual Studio 16+, cela peut se produire en raison d'un bogue interne qu'IISExpress ne parvient plus à enregistrer de site Web de développement car il n'accepte pluslocalhost connexions.

Pour résoudre le problème, il vous suffit de réenregistrer la liaison. Pour ce faire, exécutez à partir d'un shell administratif la commande suivante:

netsh http add iplisten ipaddress=:: 
Yennefer
la source
Cela a fonctionné pour moi, merci beaucoup!
Jakub Szumiato
2

J'ai eu ce problème lors de la mise à niveau d'un projet MVC . J'ai copié le plus récent-MVC .csproj sur mon fichier .csproj existant, puis je suis revenu à un projet pleinement opérationnel. Ce que je n'ai pas pris en compte, c'est le numéro de port existant dans l'ancien .csproj. Le nouveau projet avait un nouveau numéro de port, mais partageait le nom du projet / de l'assemblage. Cela a suffi à faire perdre la tête à IIS Express et à lever cette exception.

Il suffisait d'extraire l'ancien numéro de port de git et de modifier l'URL IIS Express pour l'inclure dans les paramètres du projet pour le corriger.

Chris Moschini
la source
2

La première étape la plus simple sans entrer dans la console de commande consiste simplement à fermer toutes les applications (y compris VS), puis à lancer VS par lui-même et à réessayer. Il y a probablement une autre application comme votre navigateur à l'origine du conflit. Dans mon cas, Chrome l'a causé et a été résolu lors de l'arrêt de tout et du redémarrage de VS. J'ai rouvert Chrome et tout allait bien.

Le truc netstat ci-dessus est utile, mais pour moi c'est seulement si vous ne pouvez pas faire ce que je suggère.

singleTrackVale
la source
2

pour résumer toutes les réponses. Il existe 2 solutions. Les deux ont fonctionné pour moi. - Solution n ° 1 Tuez l'application qui utilise le même port. - Solution n ° 2 Configurez IIS Express pour utiliser un port différent pour votre projet.

Solution n ° 1 (en supposant que le port dans le message d'erreur était 443) Exécutez dans la ligne de commande:

netstat -ao | findstr 443

il renvoie: TCP 0.0.0.0:443 pe01:0 LISTENING 2904 Le dernier numéro (grâce à @ chris-schiffhauer) est le PID à tuer. Allez dans le Gestionnaire des tâches -> Processus -> [Afficher les processus de tous les utilisateurs], Tuez un processus avec PID = 2904. Dans mon cas, c'était l'hôte VmWare.

Solution n ° 2 (Supposons que le message était: Impossible d'enregistrer l'URL " http: // localhost: 433 / " pour le site "MyProject.Website0" ... ). Ouvrez le fichier suivant dans notepad ++: C:\Users\MY_USER_NAME\Documents\IISExpress\config\applicationhost.configTrouvez-y une ligne contenant:

<site name="MyProject.Website0" id="...
...
            <bindings>
                <binding protocol="http" bindingInformation="*:80:localhost" />
                <binding protocol="https" bindingInformation="*:443:localhost" />
            </bindings>

Changez 433pour quelque chose d'autre, comme 4330ou supprimez la <binding.../>balise en conflit .

épox
la source
2

Dans mon cas, faire ce qui suit a fait l'affaire:

  • Supprimer le site de .vs \\ config \ applicationhost.config
  • Supprimer le site de Documents \ IISExpress \ config \ applicationhost.config
  • Supprimer l'IISUrl du .csproj

Lorsque j'ai redémarré Visual Studio, il a attribué au projet un tout nouveau numéro de port et s'est parfaitement déroulé

Djeastm
la source
2

Les numéros de port ne correspondent pas

Dans mon cas, le problème était dans mes balises de liaison trouvées dans le fichier de configuration en .vs sous mon dossier de solution, les numéros de port ne correspondaient pas. Les fixations étaient les suivantes

<bindings>
     <binding protocol="http" bindingInformation=":16433:localhost" />
</bindings>

Et dans mes paramètres, j'avais l'URL définie comme http://localhost:1943/

Donc, ce que j'ai fait a été de supprimer la liaison interne et d'exécuter mon application Web, puis elle a généré une nouvelle liaison avec un numéro différent, puis j'ai copié le nouveau port généré dans mes paramètres, puis l'erreur a disparu.

Siphamandla Hero Ngwenya
la source
Cette fois-ci (j'ai déjà eu ce problème, c'était l'une des nombreuses causes présentées dans diverses réponses ici), c'était la cause.
gburton
1

J'ai pu résoudre ce problème en supprimant tout ce qui <site>concerne les </site>balises dans

Users/<username>/Documents/IISExpress/config/applicatiohost.config fichier

<sites>
  <site>
     .
     .   ===> remove this content including the <site> and </site> tags.
     .
  </site>
</sites>
nPcomp
la source
1

Ayant juste perdu une demi-journée à essayer de résoudre ce même problème, j'ai senti que je devais ajouter la solution qui a finalement fonctionné pour moi.

TL; DR Si netstatindique que le problème n'est pas utilisé, essayez toujours quelques autres dans une gamme totalement différente

J'ai déjà rencontré ce problème, mais je trouve généralement que le redémarrage de Visual Studio, la modification des ports (incrémentation de 1) ou le redémarrage font l'affaire. Cependant, à cette occasion, rien de tout cela n'a aidé et netstatn'a pas trouvé de processus contradictoire. J'ai même réinstallé IIS et Visual Studio et supprimé plusieurs autres programmes dont je soupçonnais qu'ils pouvaient interférer. Il semblait qu'IIS essayait de lancer plusieurs instances du même site.

Finalement, j'ai essayé de courir netstatsans findstr. J'ai scanné visuellement la liste des ports actifs et j'ai remarqué que bien que ceux que j'avais essayés ne soient pas répertoriés, il y avait quelques processus utilisant des ports dans une plage similaire. Au lieu de cela, j'ai cherché une plage qui était libre, j'ai choisi un numéro de port et qui semble maintenant fonctionner.

J'aimerais savoir si quelqu'un peut expliquer pourquoi cela a pu fonctionner

Phil
la source
Cette solution l'a également résolu pour moi.
Rastographics
1

J'ai rencontré ce problème dans Visual Studio 2019 aujourd'hui et j'ai passé 3 heures avant de finalement comprendre le problème. Visual Studio utilise 2 fichiers pour suivre le numéro de port SSL, vous devez donc corriger les deux et vous devez réparer les deux lorsque Visual Studio est fermé. Les deux fichiers sont le fichier applicationhost.config qui se trouve dans le dossier .vs \ ??? \ config de votre solution; ainsi que le dossier .csproj.user de votre projet Web. Modifiez les deux fichiers et supprimez les configurations incriminées. Peut-être même simplement supprimer les deux fichiers. Ensuite, rouvrez votre application dans Visual Studio. Bonne chance!

Rob Kraft
la source
Si votre solution contient un site Web à l'ancienne (pas une application Web), les numéros de port sont également dans le fichier de solution .sln
nuander
1
  1. Fermer le studio visuel
  2. supprimer le dossier ".vs"
  3. Essayez de changer le port "localhost: 8080"

Cela a fonctionné pour moi.

Ömer Güngör
la source
1

J'ai suivi les instructions de @ Zoti et utilisé Resource Monitor pour trouver le port en question.

Il s'avère qu'Outlook s'est vu attribuer au hasard le port de son canal de communication. La morale de l'histoire étant, cela pourrait être absolument n'importe quoi.

Greg B
la source
1

La raison de cette erreur est que vous donnez le mauvais numéro de port à votre application.

just use http ports for your application to run

utilisez le port à proximité du numéro 8080, c'est-à-dire:

hôte local: 8090

pour changer le port de votre application dans Visual-Studio

goto project properties > web > Server > ProjectUrl

Talha Rafique
la source
0

J'ai déjà essayé ce qui suit:

  • Redémarré Visual Studio
  • Vérifiez tous les ports disponibles qui peuvent écouter mon numéro spécifique, mais il ne renvoie toujours aucun résultat. Aucun processus n'écoute dans mon port.
  • J'ai également essayé d'utiliser ceci mais aucun résultat.

    netstat -aon | trouver ": 80"

  • J'ai également essayé d'utiliser mais aussi de renvoyer aucun résultat.

    netstat -ao | findstr

Donc, ce que j'ai fait est de supprimer ce " Microsoft.VsHub.Server.HttpHostx64.exe " puis mon projet a démarré et lancé avec succès dans le navigateur. L'erreur a été corrigée. Je ne sais pas pourquoi mais cela fonctionne.

Voici la capture d'écran:

entrez la description de l'image ici

Willy David Jr
la source
0

J'ai eu le même problème mais il a été résolu lorsque j'ai redémarré en utilisant les privilèges d'administrateur. (Peut-être juste le redémarrage)

Vaibhav Garg
la source
0

J'ai eu le même problème aujourd'hui et rien de ce que j'ai trouvé sur Internet n'a fonctionné. J'utilise le port 2057 depuis des années, mais du coup ça ne fonctionnait plus. Le changer en un autre nombre bas comme 2058 a donné le même message d'erreur, mais quand je l'ai changé en 20057, tout a fonctionné à nouveau. Peut-être que quelque chose a changé avec la façon dont les numéros de port inférieurs sont traités.

Bogi Lenvig
la source