IIS Express da un error de acceso denegado al depurar ASP.NET MVC

102

He creado un proyecto ASP.NET MVC 3 y estoy usando IIS Express como servidor web durante el desarrollo. Cuando intento depurar, aparece el siguiente mensaje de error.

¿Cómo se puede solucionar esto?

Error del servidor en la aplicación '/'.

Acceso denegado. Descripción: se produjo un error al acceder a los recursos necesarios para atender esta solicitud. Es posible que el servidor no esté configurado para acceder a la URL solicitada.

Mensaje de error 401.2 .: No autorizado: el inicio de sesión falló debido a la configuración del servidor. Verifique que tiene permiso para ver este directorio o página según las credenciales que proporcionó y los métodos de autenticación habilitados en el servidor web. Póngase en contacto con el administrador del servidor web para obtener ayuda adicional.

Kris-I
fuente
3
¿Está ejecutando IISExpress sin privilegios administrativos?
chandmk
2
Entonces, después de golpearme la cabeza con esto por un tiempo, finalmente me di cuenta de que era porque VS no había establecido una página predeterminada y aparentemente IISExpress.exe no proporciona listas de carpetas para que eso sea obvio.
Mark Allen

Respuestas:

113

Si está utilizando Visual Studio, también puede hacer clic con el botón izquierdo en el proyecto en el Explorador de soluciones y cambiar la propiedad Autenticación de Windows a Habilitada en la ventana Propiedades .

Jason
fuente
2
Esto no es específico de Visual Studio 2012, también se puede hacer al menos en Visual Studio 2010.
Loïc Lopes
5
Trabajó para mí en VS 2013.
kaybee99
2
También debe deshabilitar la autenticación anónima.
Glazed
1
En el explorador de soluciones, haga clic en el nombre del proyecto en el nodo de la solución, luego cambie a la ventana Propiedades, allí puede ver la propiedad Autenticación de Windows configurada en Habilitada
sairfan
1
No veo esta configuración en ninguna parte de la ventana de propiedades. Estoy usando VS 2015.
Mark Bonafe
99

La causa de este problema fue que IIS Express no permitía WindowsAuthentication. Esto se puede habilitar configurando

<windowsAuthentication enabled="true">

en el archivo applicationhost.config ubicado en C: \ Users [nombre de usuario] \ Documents \ IISExpress \ config.

Hormiga veloz
fuente
19
Visual Studio 2010 y 2012 pueden agregar esta configuración por usted, por proyecto, para que la configuración global no cambie de su configuración predeterminada, consulte stackoverflow.com/a/7168308/23566
Robert Claypool
Estoy probando esa configuración, porque también recibo este error en VS 2013 esporádicamente, veamos si ayuda, se lo haré saber.
Matt
2
Mejor si usa% userprofile% \ documents \ iisexpress \ config \ applicationhost.config. El mío estaba en D: (¡gracias Dan! Danesparza.net/2014/09/… )
Jeramy Rutley
Esta es la única solución que funcionó para mí, ¡muchas gracias!
Mohammad Anini
Intenté esto en VS 2017 y no funcionó. La solución publicada por Jason funcionó.
myroslav
73

Usé la respuesta de Jason pero quería aclarar cómo ingresar a las propiedades.

  1. Seleccionar proyecto en el Explorador de soluciones

ingrese la descripción de la imagen aquí

  1. F4 para llegar a las propiedades (diferente a las propiedades del clic derecho)
  2. Cambie la autenticación de Windows a habilitada

ingrese la descripción de la imagen aquí

Tony L.
fuente
3
Muchas gracias por deletrear esto y especificar que son las propiedades F4 las que deben cambiarse.
PeterDNCO
1
¡Gracias! También tuve que configurar 'Autenticación anónima' en 'Habilitada'.
Mahesh
1
¡Muchas gracias también!
FunMatters
1
Eres hermosa.
medusa kosher
1
Estoy usando VS 2015, ¡esto no existe!
Mark Bonafe
18

Alojamiento en IIS Express: 1. Haga clic en su proyecto en el Explorador de soluciones para seleccionar el proyecto. 2. Si el panel Propiedades no está abierto, ábralo (F4). 3. En el panel Propiedades de su proyecto: a) Establezca "Autenticación anónima" en "Desactivada". b) Establezca "Autenticación de Windows" en "Habilitado".

Daniel
fuente
12

En mi caso tuve que abrir el archivo:

C:\...\Documents\IISExpress\config\applicationhost.config

Tenía esto dentro del archivo:

  <authentication>
  <anonymousAuthentication enabled="true" User="" />

Acabo de quitar la User=""pieza. Realmente no sé cómo llegó esta cosa allí ... :)

Nota: asegúrese de tener algo como esto al final de applicationhost.config:

   .
   .
   .
   <location path="MyCompany.MyProjectName.Web">
        <system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="true" />
                    <windowsAuthentication enabled="false" />
                </authentication>
            </security>
        </system.webServer>
    </location>
</configuration>

También puede echar un vistazo aquí: https://stackoverflow.com/a/10041779/114029

Ahora puedo acceder a la página de inicio de sesión como esperaba.

Leniel Maccaferri
fuente
1
Seguí tus pasos, todavía no me funciona. Si se abre desde vs2010, funciona bien, cuál es el problema en
vs2013
@ user1016740 No estoy seguro porque hay una gran cantidad de posibilidades / caminos a seguir para intentar resolver este problema. Los pasos que describí aquí lo resolvieron en mi entorno que creo que es diferente al tuyo.
Leniel Maccaferri
8

En mi caso, una ejecución anterior de mi aplicación desde VS reservó la URL. Pude ver esto ejecutando en una consola:

netsh http show urlacl

para eliminar esta reserva ejecuté esto en una consola elevada :

netsh http delete urlacl http://127.0.0.1:10002/

Encontré que estos pasos aquí resolvieron mi problema.

Estoy usando VS2013

BillDarcy
fuente
Esto es muy útil si alguna vez ha editado su applicationhost.config para ejecutar un sitio en varios puertos a la vez. Eliminar las entradas del .config no elimina ninguna reserva en netsh. Gracias hombre.
Dusda
5

Tuve que ejecutar Visual Studio Administrative Modepara deshacerme de este error.

Serj Sagan
fuente
3

También tuve el mismo problema y finalmente pude superarlo.

Solution ExplorerRight click on projectPropertiesWeb tabProject Url

¡He elegido otro número de puerto y todo salió bien!

frogatto
fuente
1

Ninguno de los anteriores me había funcionado. Esto me había funcionado antes de hoy. Entonces me di cuenta de que había estado trabajando para crear una conexión alojada en mi computadora portátil y había compartido una conexión a Internet con mi conexión de red inalámbrica.

Para solucionar mi problema:

Vaya a Panel de control> Red e Internet> Conexiones de red

Haga clic derecho en cualquier conexión de red inalámbrica secundaria que pueda tener (la mía se llamó Conexión de red inalámbrica 2) y haga clic en 'Propiedades'.

Vaya a la pestaña 'Compartir' en la parte superior.

Desmarque la casilla que dice 'Permitir que otros usuarios de la red se conecten a través de la conexión a Internet de esta computadora'.

Presione Aceptar> luego Aplicar.

¡Espero que esto ayude!

Ryan C
fuente
1

Abrí mi archivo web.config y encontré y eliminé esta sección:

<authorization>
  <deny users="?" />
</authorization>

y apareció mi sitio, pero hay problemas con la autenticación.

kfn
fuente
De acuerdo, ayudó a resolver el problema, pero ahora tengo algunos otros problemas que necesito solucionar.
Jamshaid Kamran
0

Acabo de solucionar este problema exacto en IIS EXPRESS lo solucioné editando el .config del host de la aplicación en la sección de ubicación específica a continuación. Había configurado la autenticación de Windows en Visual Studio 2012, pero cuando entré en XML se veía así.

la etiqueta de autenticación de Windows debe agregarse a continuación como se muestra.

<windowsAuthentication enabled="true" />

<location path="MyApplicationbeingDebugged">
        ``<system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="false" />
                    <!-- INSERT TAG HERE --> 
                </authentication>
            </security>
        </system.webServer>
</location>
user3507561
fuente
0

He estado luchando con este problema al intentar crear una aplicación simple para SharePoint usando Provider Hosted.

Después de pasar por applicationhost.config, en la sección, basicAuthentication se estableció en false. Lo cambié a verdadero para superar el 401.2 en mi escenario. Hay muchos otros enlaces sobre cómo encontrar el archivo applicationhost.config para IIS Express.

kfrosty
fuente
0

No vi esta respuesta "completa" en ninguna parte; Acabo de ver el de cambiar los números de puerto después de publicar esto, así que meh.

Asegúrese de que en las propiedades de su proyecto en Visual Studio, esa URL del proyecto no esté asignada a la misma URL o puerto que se usa en IIS para los enlaces de sitios.

Estoy buscando el "por qué" para esto, pero mi suposición es que tanto IIS como IIS Express de Visual Studio usan el mismo directorio al crear directorios virtuales y Visual Studio solo puede crear nuevos directorios virtuales y no puede modificar cualquiera que IIS haya creado cuando aplica sus enlaces al sitio.

siéntete libre de corregirme sobre el por qué.

usuario1040975
fuente
0

Nuestra página de error estaba detrás de la página de inicio de sesión, pero la página de inicio de sesión tenía un error en uno de los controles, lo que crea un bucle infinito.

Eliminamos todos los controles de la página infractora y los volvimos a agregar uno por uno hasta que se ubicó y solucionó el control correcto.

Atron Seige
fuente
0

En mi caso (aplicación ASP.NET MVC 4), Global.asaxfaltaba el archivo. Aparecía en el Explorador de soluciones con un signo de exclamación. Lo reemplacé y el error desapareció.

Moisés Machua
fuente