Impossible de démarrer le site dans IIS (utilisation par un autre processus)

96

Lorsque j'essaie de démarrer un site dans IIS, il est dit:

le processus ne peut pas accéder au fichier car il est utilisé par un autre processus

J'ai cherché dans Google et j'ai trouvé qu'un autre site utilisait peut-être le port 80, mais dans MyIIS, je vois que seul ce site utilise le port 80. Qu'est-ce qui pourrait utiliser le port 80 ou y a-t-il un autre problème?

hichris123
la source
redémarrez votre système une fois, puis essayez.
عثمان غني
Je l'ai fait mais encore une fois le même problème
1
Essayez de configurer IIS pour qu'il s'exécute sur un autre port. Vous pouvez avoir un autre serveur en cours d'exécution sur votre machine. Une instance Apache? Il y a quelques vers qui ouvrent également le port 80 comme porte dérobée sur les ordinateurs infectés.
nunespascal
Ce texte d'erreur n'est certainement pas utile, mais si vous vérifiez les journaux de l'observateur d'événements, il vous indique qu'il y a eu une erreur lors de la liaison au port 8080 (utilisé par le site Web dans mon IIS). Sur ma boîte Windows 10, il a enregistré deux erreurs de IIS-W3SVC et HttpEventsource. Texte du deuxième journal des événements - Unable to bind to the underlying transport for [::]:8080. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.. Le port 8080 était utilisé par un service Oracle. J'ai changé le port utilisé par mon site Web en 8081.
RBT

Réponses:

176

Vérifiez en utilisant netstat -aonou netstat -aon | findstr 0.0:80dans une invite de commande pour voir quel ID de processus ÉCOUTE sur le port: 80 , puis surveillez cet ID de processus (PID) dans le Gestionnaire des tâches avec vue-> sélectionner les colonnes-> ID de processus coché. Terminez ce processus, redémarrez IIS et vous avez terminé. ( Remarque: si vous avez Skype installé, essayez d'abord de quitter ce processus. )

Dans un gestionnaire de tâches moderne, vous devez accéder à l' onglet Détails pour rechercher le PID. Ou, comme mentionné par @Nikita G dans les commentaires, vous pouvez utiliser cette commande pour trouver la tâche à partir de votre invite de commande:

tasklist /FI "PID eq 123"

Remarque: changez 123avec le PID renvoyé par la première commande.

Manoj Purohit
la source
11
Merci également pour le commentaire Skype.
Keith
Skype fonctionnait sur le port 80 et mes sites Web sont également configurés sur le port 80, j'ai donc résolu ce problème en déconnectant skype, puis j'ai modifié les paramètres de skype pour qu'il fonctionne sur le port 8080. (Pas obligatoire pour démarrer IIS)
Umar Shafeeq
1
C'est amusant quand les produits Microsoft se battent ... jusqu'à ce que vous deviez continuer à redémarrer votre ordinateur lorsque vous réalisez que cela s'est produit à nouveau pour une raison inconnue et que vous n'avez pas l'énergie pour comprendre ce qui le cause (jusqu'à présent). Sérieusement, très ennuyeux.
andyface
10
Voici un moyen un peu plus simple de le faire. Afficher uniquement les articles qui écoutent sur le port 80: netstat -aon | findstr 0.0:80. Et en supposant alors que les rendements PID 123, exécutez la commande suivante pour voir quel processus est le suivant : tasklist /FI "PID eq 123".
Nikita
1
Pour moi, c'était un OracleServiceXEservice qui avait mangé le port 8080 auquel le nouveau site Web de mon serveur IIIS essayait de se lier.
RBT
35

Cela se produit parce qu'un processus différent utilise le port 80, il peut s'agir d'une application de chat sur votre PC comme Skype.

Tout d'abord, changez le port par défaut du site Web qui était 80 en un port inutilisé (par exemple 8087). Pour ce faire, faites un clic droit sur l'application puis cliquez sur «Modifier la liaison».

entrez la description de l'image ici

entrez la description de l'image ici

Après ce changement de port, redémarrez à nouveau. Vous pouvez maintenant identifier le processus qui bloque le port IIS 80. Pour vérifier cela, utilisez la commande netstat qui affiche les détails du port avec l'ID de processus.

Ravindra Bagale
la source
6
skype était mon problème
nbushnell
même ici, skype utilisait le port 80. Désactivez-le sous Options -> Avancé -> Connexion -> "Utiliser les ports 80 et 442 pour plus ..."
Wagner da Silva
25

Déconnectez-vous de Skype et réessayez. J'ai rencontré le même problème et je viens de me déconnecter de Skype, puis de réinitialiser mon IIS. Cela a fonctionné pour moi.

Ovais Mumtaz
la source
2
Vous pouvez modifier le port utilisé par Skype à partir des paramètres
3ventic
10

Vous pouvez également exécuter cette commande pour savoir quelle application ou quel service utilise le port, puis le retracer dans le gestionnaire de tâches (à condition qu'il ne s'agisse pas du service d'agent de déploiement Web).

netstat -o -n -a | findstr 0.0: 80

Ensuite, ouvrez le Gestionnaire de tâches, allez dans Processus, cliquez sur la case à cocher "Afficher les processus pour tous les utilisateurs", puis cliquez sur le menu Affichage et Allez dans les colonnes, ajoutez la colonne PID.

Faites correspondre l'ID de processus de la commande netstat au PID dans le gestionnaire de tâches et vous trouverez le service ou l'application qui utilise le port.

Bikey
la source
2
Si vous voulez éviter le gestionnaire de tâches d'ouverture, exécutez la commande suivante à droite après pour voir quel processus est le suivant : tasklist /FI "PID eq <PID from netstat (without brackets)>".
Nikita
2

Comme d'autres l'ont dit, quelque chose d'autre peut utiliser le port 80 ou 443. C'était VMWare Workstation Server pour moi, mais vérifiez les autres réponses pour savoir comment utiliser netstat.

poisson soluble
la source
+1 pour mentionner le port 443. J'utilisais netstatpour vérifier le port 80 et rien n'a été montré. Ensuite, vous avez mentionné le port 443 et c'était là.
jtate
1

Je pense que ce lien donne une assez bonne explication et solution de ce problème http://support.microsoft.com/KB/890015

Le plus souvent; cela est dû à l'une des deux raisons suivantes: 1) le port 80 est utilisé par autre chose et comme suggéré par d'autres, vous pouvez utiliser netstat -o -n -a | findstr 0.0: 80 pour voir si c'est le cas. Si oui, tuez le processus du gestionnaire de tâches (cochez afficher les processus de tous les utilisateurs)

2) si le port 80 n'est pas utilisé, la deuxième cause est potentiellement une adresse IP non valide dans ListenOnlyList classée dans la clé de registre de HTTP-> Paramètres. Si vous suivez le lien pour définir la clé manuellement ou en fait, vous pouvez utiliser (xp et serveur 2003) httpcfg delete iplisten -i ipaddresspour supprimer l'adresse IP invalide. Vous devez redémarrer le http une fois que vous modifiez l'adresse ip!

stt106
la source
@bummi merci pour le commentaire. J'ai ajouté un peu plus de détails maintenant.
stt106
0

Dans mon cas, c'était le " Service de partage de synchronisation " (SyncShareSvc) qui fonctionnait et utilisait le port 80. netstat a montré que 80 était gratuit, cependant. Je pourrais faire fonctionner le site sur un autre port, mais pas 80. si j'ajoutais un nom d'hôte, IIS me permettrait de démarrer le site, mais je serais invité à m'authentifier Digest lors de la navigation vers localhost (ou tout nom d'hôte que je ajoutée). Seules les authentifications anonymes et formulaires ont été activées dans IIS ...

J'ai également constaté qu'après avoir arrêté IIS, http://localhost je me demandais toujours l'authentification Digest.

La solution - dans mon cas - était de supprimer les services de fichiers et de stockage> Fichiers et services iSCSI> « Dossiers de travail » des services installés (redémarrage requis).

Après avoir supprimé le service «Dossiers de travail» et redémarré, IIS a fonctionné comme prévu.

Adam Hey
la source
0

Mon cas était qu'après l'installation de RD Web Access, les sites Web par défaut d'origine ne pouvaient pas être démarrés. Suppression du rôle d'accès Web RD toujours le même. La liaison du port 443 supprimée a résolu le problème.

pseudo
la source
0

La plupart du temps, lorsque cela se produit par les développeurs Web, c'est la raison pour laquelle Apache, donc si vous accédez au fichier de configuration d'Apache! ouvrez-le et recherchez avec ctrl + f à 80 et changez l'ip que vous verrez en 8080 et la phrase en dessous avec 80 à 8080 et vous devez le configurer dans vous xampp, ou le programme que vous utilisez actuellement

J'espère que je vais vous aider les gars

Arne Schouten
la source
La question concerne IIS, pas Apache.
C. Helling
1
Oui, mais ces 2 programmes interfèrent l'un avec l'autre alors peut-être que j'aiderai quelqu'un qui a le même problème que moi
Arne Schouten
0

Afin d'obtenir des informations plus significatives, une façon est d'obtenir également des informations de propriété lors de l'émission netstatafin que vous connaissiez le processus qui utilise 80 (liaison http par défaut) ou 443 (si la liaison https est définie):

 netstat -ab

Dans mon cas, le coupable était vmware:

TCP 0.0.0.0:443 Nom de l'ordinateur: 0 ECOUTE
[vmware-hostd.exe]

netstat peut être redirigé vers find pour rechercher les ports 80 ou 443 (par exemple find ":443"), mais ces connexions actives particulières s'afficheront au début de la liste car elles sont faciles à voir.

Alexei
la source