¿Por qué y cómo solucionarlo? IIS Express "El puerto especificado está en uso"

81

Sabemos que se asigna un número de puerto aleatorio a una aplicación web en Visual Studio. Funciona bien en el escritorio de mi oficina. Pero cuando coloco el código en mi computadora portátil (de VisualStudio.com) y ejecuto la aplicación web. Recibí un mensaje que decía

El puerto especificado está en uso

El puerto 10360 ya está siendo utilizado por otra aplicación.

Recomendaciones

  1. Intente cambiar a un puerto que no sea 10360 y superior a 1024.
  2. Detenga la aplicación que está usando el puerto 10360.

Puedo arreglarlo usando Recommendation #1cambiando el puerto a algo diferente como 13333. Pero tengo mucha curiosidad por saber qué pasó con el puerto 10360. ¿Cómo puedo verificar qué aplicación está usando el puerto 10360? ¿Cómo puedo detener esa aplicación?

Blaise
fuente
Yo tuve el mismo problema. Mi problema fue que tenía varios proyectos web en la misma solución. A pesar de que no estaban corriendo. Uno de los otros proyectos utilizó el mismo puerto. Solo asegúrese de que cualquier proyecto determinado use su propio puerto.
Amenaza

Respuestas:

52

resuelvo el problema de esta manera ...

Archivo -> Abrir -> Sitio web ... ingrese la descripción de la imagen aquí

Después de eso, seleccione Local IIS en IIS Express Site elimine el proyecto no deseado.

espero que esto ayude.

yean
fuente
4
Tuve que reiniciar después de hacer esto.
angrydust
4
¿Dónde se selecciona IIS local en el sitio IIS Express
Prakash Joshi
2
Este paso no solucionó el problema mío. Después de seguir los pasos, reinicié Visual Studio también pero sin ganancia.
user1451111
Después de hacer esto, aparece el error "No se puede conectar al servidor web iisexpress" cuando intento ejecutar la solución.
Enrico
37
  1. cámbielo en la solución (clic derecho) -> propiedad -> pestaña web
  2. Haga clic en Crear directorio virtual (delante del cuadro de texto de la URL del proyecto)

Cambio de puerto IIS Express para arreglar el puerto en uso

Iman
fuente
1
No quiero cambiar mi página de propiedades .sln una y otra vez. En mi caso, el puerto definido en la página de propiedades (como se mostró arriba) se bloquea cuando hago algo en Visual Studio que hace que Visual Studio se bloquee.
bkwdesign
@bkwdesign, no tengo idea sobre el bloqueo, tal vez debería ejecutar con Admin Privilege y también crear un directorio virtual o actualizar su VS a la última versión o, por último, simplemente cambiar al rol estándar de IIS
Iman
30

Tuve un problema similar al ejecutar Visual Studio 2019 en Windows 10. Algunas soluciones que funcionaron para otros parecían incluir:

  1. Cambiar el número de puerto de la aplicación.
  2. Haga que Visual Studio asigne automáticamente un número de puerto cada vez que se inicie la aplicación.
  3. Reinicie Visual Studio
  4. Reinicia la computadora.

Desafortunadamente, ninguna de estas soluciones funcionó para mí, asignar otro número de puerto funcionó pero no fue una solución aceptable ya que era importante que mi aplicación se ejecutara en un puerto específico.

La solución

Primero ejecuté el comando:

netsh http add iplisten ipaddress=::

desde un proceso de línea de comandos elevado. Esto resolvió el error inicial, cuando intentaba ejecutar la aplicación ya no recibía el error "puerto en uso", en su lugar, ahora recibí un error que indicaba que la aplicación no podía vincularse al puerto porque se requerían privilegios administrativos. (aunque estaba ejecutando Visual Studio como administrador)

El segundo error fue causado por Hyper-V que agrega puertos al rango de exclusión de puertos, el puerto que usa mi aplicación estaba en uno de estos rangos de exclusión. Puede ver estos puertos ejecutando el siguiente comando:netsh interface ipv4 show excludedportrange protocol=tcp

Para solucionar este segundo error:

  1. Desactive Hyper-V: Panel de control-> Programas y características-> Activar o desactivar las funciones de Windows. Desmarque Hyper-V
  2. Reinicia la computadora.
  3. Agregue el puerto que está utilizando al rango de exclusión de puertos: netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent
  4. Reactivar Hyper-V
  5. Reinicia la computadora

A partir de aquí todo funcionó a la perfección.

Philip Trenwith
fuente
Vaya, lo único que me llevó a la solución. La desactivación de Hyper-V me dio un BSOD de Windows 10 frowny gracias a la compilación corporativa, pero gracias a que netsh interface ipv4 show excludedportrange protocol=tcppude al menos elegir un nuevo puerto para el proyecto.
SharpC
1
DUDE No solo fue la respuesta correcta, sino que en realidad la explicaste en lugar de simplemente descargar un script CMD (lo cual está bien por cierto en la mayoría de los casos). Muchas gracias, votaría 100 veces más si pudiera.
Ryanman
1
Gracias, esto me sucedió después de instalar Docker.
MaxPower
1
Esto me salvó, pasé todos mis días y estaba muy frustrado. Esto me lleva a la solución correcta. github.com/docker/for-win/issues/3171#issuecomment-459205576
muhammad kashif
Tuve este problema debido a Hyper-V. ¡Gracias por esto!
DylanSp
28

Tuve el mismo problema, pero no apareció ningún proceso ni en netstat ni en resmon.

Lo que resolvió el problema para mí fue cerrar todas las ventanas abiertas del navegador.

Clangon
fuente
1
Guau. Eso funcionó para mí también. ¿Alguien puede explicar por qué?
SJC
Confirmando que esto a veces soluciona el problema (usando Firefox como navegador estándar), y no tiene absolutamente ningún sentido.
Florian Winter
4
Esto no funcionó para mí. No hay aplicaciones en ejecución. Solo un puerto en uso. Sin páginas web en ejecución. Solo un error. Que dolor.
Mike
2
Creo que la razón por la que esto funciona es cuando haces una solicitud web, el navegador está usando un número arbitrario para el puerto de origen (generalmente entre 49152 y 65535) y esto entra en conflicto con el puerto configurado en IIS
Hugh Jeffner
Esto funcionó para mí también. No tenía sentido ya que la aplicación que bloqueaba el puerto no tenía ninguna razón para usarla.
James Westgate
28

¡Esto me persiguió durante más de un año!

Para mi,

  • ningún sitio web se estaba ejecutando en IIS Express
  • nada estaba usando el puerto como se determina ejecutando: netstat -anoen la línea de comando.

La solución fue correr

netsh http add iplisten ipaddress=::

desde la línea de comando.

Días felices y crédito para: ¡James Bryant! https://developercommunity.visualstudio.com/content/problem/110767/specified-port-is-in-use.html

Liam Fleming
fuente
ni idea de lo que pasó, ni idea de lo que hace ese comando, pero funcionó en otras soluciones aquí fallaron
sksallaj
4
Este comando rompió mi IIS, tenga cuidado al ejecutar esto. Tuve que ejecutar netsh http delete iplisten ipaddress = :: para que mis sitios IIS locales funcionaran nuevamente.
Steve
También rompí mi IIS, comenzó a decir que necesita privilegios administrativos para ejecutarse. Tuve que revertirlo.
jswetzen
Para aquellos que tienen problemas de privilegios de administrador después de esto, miren la respuesta de @Philip Trenwith, podrían ser rangos de puertos excluidos de Hyper-V.
IronSean
18

Estás buscando netstat.

Abra un shell de comando administrativo y ejecute

netstat -aob

Y busque el puerto 10360. Le mostrará qué ejecutable abrió el puerto y qué PID buscar en el Administrador de tareas. (En realidad, ejecute netstat -?primero en un shell sin privilegios, porque no apruebo ejecutar a ciegas cualquier cosa que no comprenda, especialmente en un contexto privilegiado).

Esto es lo que hacen los interruptores:

-a muestra todas las conexiones o puertos abiertos, no solo los activos; el puerto que desea probablemente esté escuchando, no activo.

-omuestra el PID propietario de la conexión o puerto, por lo que puede encontrar el proceso en la pestaña Procesos del Administrador de tareas. (Es posible que deba agregar la columna PID en el Administrador de tareas. Ver-> Seleccionar columnas)

-bmuestra el binario involucrado en la apertura de la conexión o puerto. Este es el que requiere acceso elevado.


fuente
Está muy bien. Ahora al menos tengo el PIDde la aplicación. Gracias.
Blaise
9
Ese comando generará mucho ruido, por lo que si desea ir directamente a la aplicación ofensiva, canalice los resultados a findtr de esta manera:netstat -aob | findstr '10360'
kmkemp
1
Todas las otras respuestas me enviaron al bosque, esta me permitió encontrar la fuente y solucionar el problema.
Hugh Jeffner
Además, puede usar nestat -aob -p TCP para ver solo los puertos TCP
Shiroy
12
  1. Cierra el VS
    1. Comience de nuevo: haga clic con el botón derecho y ejecute como administrador
    2. Ejecute su proyecto nuevamente.
Mansi
fuente
si supongamos que ese puerto es usado por algún otro proceso, cambia el puerto en el proyecto> propiedades> depuración y luego ejecuta como trabajo de administración
Noman Chali
Es bastante triste pero funcionó. Nada más funcionó. El error es completamente incorrecto ya que no tenía procesos en ejecución en el puerto en cuestión. Esto parece ser un error de Visual Studio e IISExpress. No tiene sentido por qué tuve que cerrarlo y ejecutarlo nuevamente.
Mike
Este paso no solucionó el problema mío.
user1451111
Feliz y molesto de que una ejecución de administrador sea lo que tomó después de reinicios, cambios de puerto, muertes de procesos, búsquedas de netstat, cambios de iplisten. Continuó funcionando cuando se ejecutó como usuario.
Richard
10

SOLUCIÓN SIMPLE QUE ME FUNCIONÓ: (Créditos a la combinación de las respuestas de otros)

**My System Info:**
Windows 10 build : 1809
IIS Version      : 10.0.17763.1
Hyper-V          : Enabled
Docker           : Installed - 2.3.0.2 (45183)
  • Verifique el rango de puertos bloqueados en CMD (administrador)

    >> netsh interface ipv4 show excludedportrange protocol=tcp
    
    (Sample output):
    Protocol tcp Port Exclusion Ranges
    Start Port    End Port
    ----------    --------
    49696       49795         (SEE HERE, 49796 to 49895 is not blocked)
    49896       49995
    ... list goes on ...
    
  • Abra Visual Studio y vaya a> Proyecto> Propiedades> Web> Servidores> URL del proyecto

  • Utilice el puerto que no está bloqueado.

    (Sample port):
    http://localhost:49796/
    
  • Reinicie Visual Studio (si es necesario)

  • Tómate un café y comparte el amor. (requerido) :)

Naveen Kumar V
fuente
3
¡Esto es asombroso! Gracias
Grandizer
¿Alguna idea de por qué se bloquea cierto rango?
J Santosh
4
  1. Elimine el archivo .sln, si tiene uno.
  2. Abra el archivo C: \ Users \ NN \ Documents \ IISExpress \ config \ applicationhost.config
  3. Localice el sitio problemático en configuration / system.applicationHost / sites y elimine toda la sección del sitio.
  4. "Abrir sitio web ..." de Visual Studio y el proyecto recibirá un puerto nuevo aleatorio.
Jonas Äppelgran
fuente
Esta sigue siendo la mejor solución.
Vincent
3

Si netstat no muestra nada, intente reiniciar.

Para mí, no apareció nada en netstat para mi puerto. Intenté cerrar las ventanas del navegador Google Chrome como sugirieron @Clangon y @JT Taylor, pero fue en vano.

Sin embargo, al final, el reinicio del sistema funcionó, por lo que solo puedo asumir que algo más mantenía secretamente el puerto abierto. O tal vez simplemente tomó más tiempo del que estaba preparado para esperar a que se liberaran los puertos después de que Chrome se apagara.

Paul Stephenson
fuente
¡Exactamente mi escenario!
user1451111
3

Ejecutar Visual Studio en modo administrativo resolvió mi problema

Mujtaba Zaidi
fuente
3

netstat no mostró nada ya usando el puerto

netstat -ano | findstr <your port number>no mostró nada para mí. Descubrí que el puerto se excluyó usando este comando para ver qué rangos están reservados por otra cosa:

netsh interface ipv4 show excludedportrange protocol=tcp

Puede intentar desbloquear el rango desde el puerto de inicio para varios puertos (necesita el símbolo del sistema con el administrador):

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

Sin embargo, en mi caso no pude desbloquear el rango, simplemente recibí "Acceso denegado", así que terminé teniendo que elegir otro puerto para mi sitio.

Mi solución original: lo único que funcionó fue eliminar la carpeta .vs en la carpeta de la solución. (Desde entonces descubrí que puede eliminar el .vs / config / applicationhost.config en su lugar para evitar perder tantas configuraciones).

John Leonard
fuente
Pensé que esta solución funcionaría bien, pero sigo recibiendo el error. El puerto en cuestión para mí (3333) no aparece en netstat -a en absoluto.
Chris Walsh
1
@ChrisWalsh, este problema volvió a ocurrir para mí y encontré información adicional por qué, así que actualicé mi respuesta. Puede que estés en el mismo barco que yo, el puerto no estaba en uso pero estaba reservado (excluido) por otra cosa.
John Leonard
2

Abra el Administrador de tareas y simplemente cierre todos los procesos de 'IIS Express System Tray' y 'IIS Express Worker Process' y vuelva a ejecutar el proyecto

Detalles del proceso del administrador de tareas

SumairIrshad
fuente
2

Estudio visual 2015

  • Cierre todos los archivos que tenga abiertos dentro de Visual Studio.
  • Luego cierre la aplicación y salga de Visual Studio.
  • Abra Visual Studio y debería ejecutarse correctamente.

Espero que esto ayude.

saurav singh
fuente
2
Esto no tiene nada que ver con los puertos. Lea la pregunta por favor.
UmarZaii
Ya leí la pregunta, entonces solo respondo que me pasó a mí también e hice lo mismo que escribí en la publicación y me funciona.
saurav singh
Entonces supongo que está bien.
UmarZaii
Esto me lo arregló. Muchos problemas se solucionan con solo reiniciar Visual Studio.
CapnChaos
Esto me lo arregló. No tengo idea de qué se queja UmarZaii.
Artexias
2

Para mí, el error "El puerto especificado está en uso" generalmente se corrige (en realidad funciona bien) al detener el servicio "Conexión compartida a Internet ( ICS )" (SharedAccess) y el servicio "Servicio de publicación en la World Wide Web" ( W3SVC ).

Una vez que se inicia el proyecto / ISS Express, los servicios detenidos pueden iniciarse nuevamente sin problemas.

Siempre que recibo el error, el puerto (en el rango 50000) definitivamente no está en uso (verificado con netstat y tcpview).

Sería bueno si Microsoft hiciera algunas pruebas de integración de Visual Studio / IIS Express junto con HyperV y el servicio IIS "normal" O diera alguna orientación sobre qué rangos de puertos usar para VS / IIS Express (y qué puertos evitar).

Michel
fuente
Este era mi problema y me llevó una eternidad localizarlo porque aparentemente ICS no aparece en netstat o Resource Monitor. ¡Gracias! ¡Estúpido $% @ * &&!) $ *!
James
Muchas gracias por publicar esto. Esto es lo único que funcionó para mí. Creo que sucedió entre cosas que funcionaban para el desarrollo de aplicaciones web y luego decidí compartir la conexión a Internet de mi teléfono Android a través de USB a mi computadora. E intenté todo, desde la idea <netsh http add iplisten ipaddress = ::> anterior (rompe cosas y necesita ser eliminada), hasta intentar eliminar el rango reservado (obtener acceso denegado incluso como administrador). Los reinicios, el cierre de los navegadores web, etc., no funcionaron hasta que intenté esto, así que gracias de nuevo.
Alister Smith
1

Para mí, el navegador Google Chrome fue el proceso que estaba usando el puerto. Incluso después de cerrar Chrome, descubrí que el proceso aún persistía (permito que Chrome "se ejecute en segundo plano" para poder recibir notificaciones de escritorio). Entré al Administrador de tareas, eliminé el proceso del navegador Chrome y luego inicié mi aplicación web, funcionó a las mil maravillas.

JT Taylor
fuente
1

Para mí, cierre todas las aplicaciones y reinicie la computadora.

Cuando se inicia la ventana, primero abra Visual Studio, luego abra el navegador y haga clic en ejecutar (F5).

Ahora funciona. No sé por qué.

OammieR
fuente
1

Abra su csproj con, por ejemplo, Notepad ++ y desplácese hacia abajo hasta DevelopmentServerPort. Cámbielo a otra cosa siempre que esté por encima de 1024 como se recomienda (por ejemplo, 22312). También cambie IISUrl a http: // localhost: 22312 / . Guarde sus cambios y reinicie el proyecto.

K.Oleksiak
fuente
1

En mi caso, no había ninguna aplicación que usara el puerto especificado y la ejecución elevada de Visual Studio tampoco ayudó.

Lo que funcionó para mí es reinstalar IIS Express y luego reiniciar la computadora.

Mirhat
fuente
Esta fue la única opción que me funcionó en Windows 10 1809 con VS 2017.
Desarrollador holístico
1

Debe configurar este parámetro ejecutando lo siguiente en el símbolo del sistema administrativo:

netsh http agregar iplisten ipaddress = ::

Md. Rizwanul Islam
fuente
0

Para mí, netstat hizo el truco para mostrarme que tenía Fiddler ejecutándose, lo que mantenía el puerto abierto.

Tony V
fuente
1
¿Puedes explicar un poco más?
Dieter Meemken
0

haga clic en la notificación presente en la parte inferior de la barra de tareas si recibe el error como puerto en uso, luego seleccione el icono iiss haga clic derecho y luego haga clic en salir, funciona como un encanto para mí

ashish vicky
fuente
0

El mensaje de error debería indicarle qué aplicación ya está usando el puerto; en mi caso, era explorer.exe, por lo que fue solo un caso de reiniciar el explorador desde el administrador de tareas.

John M
fuente
0

Tuve el mismo error al aparecer. Tenía mi servicio web configurado como una aplicación en IIS y lo arreglé por:

Haga clic con el botón derecho en mi proyecto de servicio web dentro de mi solución> Propiedades> Web> En 'Servidores' cambie de IIS Express a IIS local (creará automáticamente un Directorio virtual que es lo que desea)

Cristian G
fuente
0

Cuando el puerto xxxx ya se está utilizando, siempre hay un PID (Id. De proceso) elaborado con el error. Simplemente vaya al administrador de tareas en la máquina en la que está ejecutando la aplicación, haga clic en los detalles e identificará cuál es la otra aplicación. A continuación, puede decidir si desea finalizar ese proceso o no.

Ken.Fukizi
fuente
0

Solo para agregar a esto, tenía la función IIS completa activada para una de mis máquinas y parecía hacer que esto sucediera de forma intermitente.

También recibí quejas aleatorias sobre la necesidad de derechos de administrador para vincular sitios después de un tiempo, supongo que de alguna manera estaba mirando la configuración completa de IIS (que requiere administración ya que no es un archivo por usuario).

Si está atascado y nada más está ayudando (y no desea simplemente elegir otro puerto), verifique que lo haya eliminado si está presente.

Dan Harris
fuente
0

FWIW, probé toneladas de estas opciones y no llegué a ninguna parte. Luego me di cuenta de que había instalado VMWare Player justo antes de que comenzara el problema. Lo desinstalé y este error desapareció.

Estoy seguro de que hay alguna forma de hacer que coexistan, pero realmente no necesito Player, así que lo eliminé. Si ha probado todo tipo de cosas y no funciona, considere buscar en los programas que haya instalado recientemente (¿especialmente aquellos que se ocupan de adaptadores de red?) Y vea si eso lo lleva a alguna parte.

marca comercial
fuente
0

En Visual Studio 2017, seleccione Proyecto / Propiedades y luego seleccione la opción Web. En la sección IIS junto a la URL predeterminada del proyecto, haga clic en Crear directorio virtual. Esto resolvió mi problema. Creo que en mi caso, el directorio virtual del proyecto predeterminado se ha dañado de alguna manera después de una sesión de depuración.

user3615720
fuente
0

Para resolver este problema, siga el siguiente paso:

  1. Abra el CMD ejecutar como modo Administrador
  2. Luego ejecute el comando netsh http add iplisten ipaddress = ::

  3. Después de ejecutar el proyecto

Sumant Singh
fuente