web-dev-qa-db-fra.com

Comment résoudre IIS problème en studio visuel?

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

58
Priya

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.

91
Chris Schiffhauer

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

20
MusicAndCode

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]:

  • Ouvrir le Moniteur de ressources (Gestionnaire des tâches -> Performances -> Ouvrir le Moniteur de ressources)
  • Cliquez sur l'onglet Réseau .
  • Et sur TCP Connexions , recherchez l'application qui utilise le port local utilisé par IIS Express et fermez-la. (c'était firefox sur mon cas)
15
Zoti

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.

9

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.

2
singleTrackVale

Une autre application utilise ce port. Cela pourrait vous aider

2
Kautsky Lozano

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.

2
epox

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.

1
Chris Moschini

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!

1
binhtruong.it

Je viens d'avoir 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. Ouvrir l'explorateur de fichiers
  3. Naviguez jusqu'au dossier du projet incriminé
  4. Supprimer les dossiers obj et bin
  5. Supprimez le fichier * .user (probablement optionnel)
  6. Redémarrez Visual Studio et réessayez.
1
AaronK

Dans mon cas, voici ce qui s'est passé:

  • 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 a parfaitement fonctionné.

1
djeastm

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?

0
Phil

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:

  • Visual Studio redémarré
  • Vérifiez tous les ports disponibles susceptibles d’écouter mon numéro spécifique, mais il ne renvoie toujours aucun résultat. Aucun processus n'écoute dans mon port.
  • 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:

 enter image description here

0
Willy David Jr

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>
0
nPcomp