J'ai tenté d'exécuter mon service Web via Visual Studio. J'ai fait face à 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 découvert que le système PID 4 est utilisé par le système et que sa description est NT Kernel & System.
Alors j'ai essayé d'arrêter le http service
. Tous les services de dépendance ont été 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 serait utile que quelqu'un puisse aider avec ce problème
De https://www.davidsalter.co.uk/unable-to-launch-the-iis-express-web-server-error-0x80070020/
Le code d'erreur 0x80070020
signifie ERROR_SHARING_VIOLATION
, ce qui dans le cas de IIS Express (ou IIS) signifie que le port sur lequel il tente d'écouter est utilisé par un autre processus.
Utilisez la commande netstat
pour savoir quelle application utilise le port.
netstat -ao | findstr <port_number_to_search_for>
Le paramètre a
indique à netstat d'afficher toutes les connexions et les ports d'écoute.
Le paramètre o
indique à netstat d'afficher l'ID de processus associé à la connexion.
L'exécution de la commande netstat ci-dessus produira un résultat tel que:
C:\>netstat -ao | findstr 4026
TCP 12.0.0.1:4026 cs-pc:4026 LISTENING 9544
Le dernier numéro affiché (9544 ici) est l'identifiant du processus.
J'ai eu le même problème. Je viens de redémarrer Visual Studio et cela a fonctionné.
J'ai eu le même problème. Comme @Kautsky Lozano mentionne ci-dessus Une autre application utilise ce port.
Donc, [pour un système d'exploitation Windows]:
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 ai exécuté netstat
uniquement pour constater qu'aucune autre application n'utilisait les mêmes ports. Il s'avère que j'ai eu les mêmes sites avec les mêmes ports mappés dans le applicationhost.config
à Users/<username>/Documents/IISExpress/config
et le applicationhost.config
dans le dossier .vs
de ma solution. Je dois noter que le problème n'a pas commencé juste après la mise à niveau. Il commence juste à échouer systématiquement un matin. Quelques redémarrages ne semblaient pas résoudre le problème non plus.
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.
La première étape la plus facile sans passer par la console de commande consiste à fermer toutes les applications (y compris VS), puis à lancer VS par lui-même et à réessayer. Il est probable qu'une autre application, telle que votre navigateur, est à l'origine du conflit . Dans mon cas, Chrome l'a provoqué et a été résolu en arrêtant et en redémarrant VS. J'ai rouvert Chrome et tout allait bien.
Le contenu de netstat ci-dessus est utile, mais pour moi, ce n'est que si vous ne pouvez pas faire ce que je suggère.
Une autre application utilise ce port. Cela pourrait vous aider
résumer toutes les réponses. Il y a 2 solutions. Les deux travaillaient pour moi . - Solution # 1 Supprimez 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-le dans la ligne de commande:
netstat -ao | findstr 443
il retourne: TCP 0.0.0.0:443 pe01:0 LISTENING 2904
Le dernier numéro (grâce à @ chris-schiffhauer) est PID à tuer. Allez dans le gestionnaire de tâches -> Processus -> [Afficher les processus de tous les utilisateurs], Tuez un processus avec PID = 2904. Dans mon cas, c'était VmWare Host.
Solution n ° 2 (Le message était: Impossible d'enregistrer l'URL " http: // localhost: 433/ " pour le site "MyProject.Website0" ...) . Ouvrez le fichier suivant dans Remarpad ++: C:\Users\MY_USER_NAME\Documents\IISExpress\config\applicationhost.config
Trouvez-y une ligne contenant:
<site name="MyProject.Website0" id="...
...
<bindings>
<binding protocol="http" bindingInformation="*:80:localhost" />
<binding protocol="https" bindingInformation="*:443:localhost" />
</bindings>
Remplacez 433
par quelque chose d’autre, comme 4330
, ou supprimez la balise <binding.../>
conflictuelle.
J'ai eu ce problème lorsque la mise à niveau d'un projet MVC . J'ai copié le fichier .csproj plus récent-MVC sur mon fichier .csproj existant, puis je suis revenu à un projet entièrement opérationnel. Ce que j'ai omis de prendre 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/assemblage. Cela suffisait pour faire IIS Express perdre son esprit et lancer cette exception.
Il suffit de récupérer l'ancien numéro de port dans git et de modifier l'URL rapide IIS pour l'inclure dans les paramètres du projet.
Allez sur Projet Web Propriétés >> Web >> URL du projet >> Changer de portie: http: // localhost: 22345/ => http: // localhost: 22346/ Espérons que cette aide!
Je viens d'avoir ce problème même si netstat n'a montré aucun conflit.
Ce qui suit l'a corrigé pour moi:
Dans mon cas, voici ce qui s'est passé:
Lorsque j'ai redémarré Visual Studio, il a attribué au projet un tout nouveau numéro de port et a parfaitement fonctionné.
Après avoir juste perdu une demi-journée à essayer de résoudre le même problème, j’ai pensé que je devrais ajouter la solution qui a finalement fonctionné pour moi.
TL; DR Si netstat
indique que la problématique n'est pas utilisée, essayez quand même quelques autres dans une gamme totalement différente
J'ai déjà rencontré ce problème auparavant, mais je trouve généralement que redémarrer Visual Studio, changer les ports (incrémenter de 1) ou redémarrer fait l'affaire. Cependant, à cette occasion, rien de tout cela n'a aidé et netstat
n'a pas trouvé de processus contradictoire. J'ai même réinstallé IIS et visual studio et supprimé plusieurs autres programmes que je soupçonnais d'interférer. Il semblait que IIS essayait de lancer plusieurs instances du même site.
Finalement, j'ai essayé d'exécuter netstat
sans findstr
. J'ai scanné visuellement la liste des ports actifs et j'ai remarqué que, même si ceux que j'avais essayés ne figuraient pas dans la liste, il existait quelques processus utilisant des ports d'une plage similaire. Alors, au lieu de cela, j'ai cherché une gamme gratuite, j'ai choisi un numéro de port et cela semble fonctionner maintenant.
J'aimerais entendre si quelqu'un peut expliquer pourquoi cela aurait pu fonctionner?
Les numéros de port ne correspondent pas
Dans mon cas, le problème se trouvait dans mes balises de liaison trouvées dans le fichier de configuration dans .vs sous mon dossier de solutions, les numéros de port ne correspondaient pas. Les reliures étaient comme suit
<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 était 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.
J'ai déjà essayé ce qui suit:
J'ai aussi essayé d'utiliser ceci mais aucun résultat.
netstat -aon | trouver ": 80"
J'ai aussi essayé d'utiliser mais je renvoie aussi des résultats nuls.
netstat -ao | findstr
Donc, ce que j'ai fait est de supprimer ce "Microsoft.VsHub.Server.HttpHostx64.exe" puis mon projet a démarré avec succès et lancé dans le navigateur. L'erreur a été corrigée. Je ne sais pas pourquoi mais ça marche.
Voici la capture d'écran:
J'ai pu résoudre ce problème en supprimant tout le contenu des balises <site>
à </site>
fichier Users/<username>/Documents/IISExpress/config/applicatiohost.config
<sites>
<site>
.
. ===> remove this content including the <site> and </site> tags.
.
</site>
</sites>