No se puede iniciar el sitio en IIS (usar por otro proceso)


96

Cuando intento iniciar un sitio en IIS, dice:

el proceso no puede acceder al archivo porque lo utilizó otro proceso

Busqué en Google y encontré que otro sitio puede haber estado usando el puerto 80, pero en MyIIS veo que solo este sitio usa el puerto 80. ¿Qué más podría estar usando el puerto 80 o hay otro problema involucrado?


reinicie su sistema una vez y luego intente.
عثمان غني

Lo hice pero volvió a ocurrir el mismo problema

1
Intente configurar IIS para que se ejecute en otro puerto. Es posible que tenga otro servidor ejecutándose en su máquina. ¿Alguna instancia de apache? Hay algunos gusanos que también abren el puerto 80 como una puerta trasera en las computadoras infectadas.
nunespascal

Este texto de error ciertamente no es útil, pero si verifica los registros del visor de eventos, le dará una pista de que hubo un error al vincularse al puerto 8080 (utilizado por el sitio web en mi IIS). En mi Windows de 10 cajas que se registra dos errores de IIS-W3SVC y HttpEventfuente. Texto del segundo registro de eventos - 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.. El puerto 8080 estaba siendo utilizado por un servicio de Oracle. Cambié el puerto utilizado por mi sitio web a 8081.
RBT

Respuestas:


176

Verifique usando netstat -aono netstat -aon | findstr 0.0:80en un símbolo del sistema para ver qué ID de proceso está ESCUCHANDO en el puerto: 80 y luego busque ese ID de proceso (PID) en el Administrador de tareas con vista-> seleccionar columnas-> ID de proceso marcado. Finalice ese proceso, reinicie IIS y listo. ( Nota: si tiene Skype instalado, intente salir de ese proceso primero ) .

En un Administrador de tareas moderno, debe ir a la pestaña Detalles para buscar el PID. O, como lo menciona @Nikita G en los comentarios, puede usar este comando para encontrar la tarea desde su símbolo del sistema:

tasklist /FI "PID eq 123"

Nota: cambie 123con el PID devuelto desde el primer comando.


11
Gracias también por el comentario de Skype.
Keith

Skype se estaba ejecutando en el puerto 80 y mis sitios web también están configurados en el puerto 80, así que solucioné este problema cerrando la sesión de skype y luego cambié la configuración de skype para que se ejecute en el puerto 8080. (No es obligatorio para iniciar IIS)
Umar Shafeeq

1
Es divertido cuando los productos de Microsoft luchan ... hasta que tienes que seguir reiniciando tu computadora cuando te das cuenta de que ha sucedido nuevamente por alguna razón desconocida y no tienes la energía para descubrir qué lo causa (hasta ahora). En serio, muy molesto.
andyface

10
Aquí tienes una forma un poco más sencilla de hacerlo. Mostrar sólo los elementos que escucha en el puerto 80: netstat -aon | findstr 0.0:80. Y a continuación, suponiendo que los rendimientos PID 123, ejecute el siguiente para ver qué proceso es éste: tasklist /FI "PID eq 123".
Nikita G.

1
Para mí, era el OracleServiceXEservicio que se había comido el puerto 8080 al que el nuevo sitio web de mi servidor IIIS intentaba vincularse.
RBT

35

Está sucediendo porque un proceso diferente está usando el puerto 80, puede ser una aplicación de chat en su PC como Skype.

Primero, cambie el puerto del sitio web predeterminado que era 80 a algún puerto no utilizado (por ejemplo, 8087). Para lograr esto, haga clic derecho en la aplicación y luego haga clic en 'Editar enlace'.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Después de este cambio de puerto, reinicie nuevamente. Ahora puede identificar qué proceso está bloqueando el puerto IIS 80. Para verificar esto, use el comando netstat que muestra los detalles del puerto junto con el ID del proceso.


6
Skype era mi problema
nbushnell

lo mismo aquí, skype estaba usando el puerto 80. Desactívelo en Opciones -> Avanzado -> Conexión -> "Use el puerto 80 y 442 para más ..."
Wagner da Silva


10

También puede ejecutar este comando para averiguar qué aplicación o servicio está usando el puerto y luego rastrearlo en el Administrador de tareas (siempre que no sea el Servicio de agente de implementación web).

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

Luego abra el Administrador de tareas, vaya a Procesos, haga clic en la casilla de verificación "Mostrar procesos para todos los usuarios" y luego haga clic en el menú Ver y vaya a las Columnas, agregue la columna PID.

Haga coincidir el ID de proceso del comando netstat con el PID en el administrador de tareas y encontrará el servicio o la aplicación que está utilizando el puerto.


2
En caso de que quiera evitar el administrador de tareas de apertura, ejecute el siguiente comando después de la derecha para ver qué proceso es éste: tasklist /FI "PID eq <PID from netstat (without brackets)>".
Nikita G.

2

Como han dicho otros, algo más puede estar usando el puerto 80 o 443. Para mí, era VMWare Workstation Server, pero verifique otras respuestas sobre cómo usar netstat.


+1 por mencionar el puerto 443. Estaba usando netstatpara verificar el puerto 80 y no apareció nada. Luego mencionaste el puerto 443 y ahí estaba.
jtate

1

Creo que este enlace ofrece una explicación bastante buena y una solución a este problema. http://support.microsoft.com/KB/890015

La mayor parte del tiempo; es causado por una de las dos razones: 1) el puerto 80 está siendo usado por otra cosa y, como lo sugirieron otros, puede usar netstat -o -n -a | findtr 0.0: 80 para ver si este es el caso. Si es así, elimine el proceso desde el administrador de tareas (marque mostrar procesos de todos los usuarios)

2) si no se usa el puerto 80, la segunda causa es potencialmente una dirección IP no válida en ListenOnlyList archivada en la clave de registro de HTTP-> Parámetros. Si sigue el enlace para configurar la clave manualmente o, de hecho, puede usar (xp y server 2003) httpcfg delete iplisten -i ipaddresspara eliminar la dirección IP no válida. ¡Debe reiniciar http una vez que edite la dirección IP!


@bummi gracias por el comentario. He agregado un poco más de detalles ahora.
stt106

0

En mi caso, fue el " Sync Share Service " (SyncShareSvc) el que se estaba ejecutando y usando el puerto 80. Sin embargo, netstat mostró 80 como libre. Podría hacer que el sitio se ejecute en otro puerto, pero no en el 80.Si agregué un nombre de host, IIS me permitiría iniciar el sitio, pero me solicitarían la autenticación implícita al navegar a localhost (o cualquier nombre de host que adicional). Solo se habilitaron Anonymous y Forms Auth en IIS ...

También descubrí que, después de detener IIS, http://localhosttodavía me solicitaba la autenticación implícita.

La solución, en mi caso, fue eliminar Servicios de archivo y almacenamiento> Archivos y servicios iSCSI> " Carpetas de trabajo " de los servicios instalados (es necesario reiniciar).

Después de eliminar el servicio "Carpetas de trabajo" y reiniciarlo, IIS funcionó como se esperaba.


0

Mi caso fue que después de instalar RD Web Access, no se pudieron iniciar los sitios web predeterminados originales. Se eliminó la función de acceso web de RD sigue siendo la misma. El enlace eliminado del puerto 443 resolvió el problema.


0

La mayoría de las veces, cuando esto sucede por parte de los desarrolladores web, es la razón por la que apache, ¡así que si va al archivo de configuración desde apache! ábrelo y busca con ctrl + f a 80 y cambia la ip que verás a 8080 y la oración debajo de 80 a 8080 y necesitas confirmar eso en tu xampp, o el programa que estás usando actualmente

Espero ayudarlos, chicos


La pregunta es sobre IIS, no apache.
C. Helling

1
Sí, pero estos 2 programas interfieren entre sí, así que tal vez ayude a alguien que tenga el mismo problema que yo
Arne Schouten

0

Para obtener información más significativa, una forma es obtener también información de propiedad al emitir netstatpara que conozca el proceso que utiliza 80 (enlace http predeterminado) o 443 (si se define el enlace https):

 netstat -ab

En mi caso, el culpable fue vmware:

TCP 0.0.0.0:443 ComputerName: 0
ESCUCHANDO [vmware-hostd.exe]

netstat se puede canalizar en find para buscar los puertos 80 o 443 (por ejemplo find ":443"), pero estas conexiones activas en particular se mostrarán al principio de la lista y son fáciles de ver.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.