ASP MVC en IIS 7 da como resultado: Error HTTP 403.14 - Prohibido

146

Estoy desarrollando un proyecto web ASP MVC. Ahora tengo un requisito que me obliga a implementarlo en un IIS7 en medio del desarrollo (para verificar algunas características). Recibo el mensaje de error mencionado anteriormente cada vez que intento escribir la URL del sitio web. (Nota: máquina de desarrollo: Vista Home Premium, IIS7)

Lo que he hecho hasta ahora:

Editó el archivo HOSTS (C: \ WINDOWS \ system32 \ drivers \ etc \ hosts).

Coloque dos dominios en él (127.0.0.1 dominio1.com y 127.0.0.1 dominio2.com).

Creó una carpeta c: \ websites \ dirOfApplication y se implementó desde Visual Studio 8 en esta carpeta.

En IIS7 creó un nuevo sitio con el nombre de host domain1.com y la carpeta de la aplicación anterior.

Al escribir la dirección domain1.com en el navegador web, se produce el error anterior (Error HTTP 403.14 - Prohibido: el servidor web está configurado para no incluir el contenido de este directorio).

¡Creo que me estoy perdiendo algo pero no sé qué! Intenté implementar los archivos System.Web.Mvc, System.Web.Abstraction & System.Web.Routing con el mismo resultado. Cada vez que trato de presionar F5 y ejecutar la aplicación, ¡funciona bien!

savvas sopiadis
fuente
posible duplicado de ASP.NET MVC en IIS 7.5
Fenton

Respuestas:

224

Tal vez sea útil para alguien: después de convertir mi aplicación a MVC 4 con .NET Framework 4.5 e instalar el marco en mi servidor con IIS 7.0, encontré el mismo error 'prohibido' mencionado en la pregunta. Probé todas las opciones descritas anteriormente en vano, cuando noté el

<system.webServer>
 <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

faltaba en mi web.config. Después de agregar esto, todo funcionó. Simple, pero fácil de pasar por alto ...

EDITAR:

Por supuesto, la solución anterior funcionará, pero de hecho es un desperdicio de recursos. Creo que es mejor agregar el módulo de enrutamiento como lo señaló Chris Herring en los comentarios.

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>
Cyril Mestrom
fuente
2
Resulta que cuando desinstalé un paquete NuGet, lo eliminó runAllManagedModulesForAllRequests="true"de mi Web.config. Gracias por mencionar esto antes de pasar toda la noche tratando de resolver esto.
Schmalls
3
¡¡ESTA!! Arrrrgh Pasé / perdí todo un día tratando de hacer que esto funcionara hasta que encontré tu respuesta, ¡gracias! Lo que es extraño es que funcionaría bien en IIS en mi máquina local, pero no en la caja de producción y ambos ejecutan IIS7.5
Glenn Slaven
1
Eso fue todo. La desinstalación de Cassette Nuget a veces lo elimina. Gracias.
Zachary Scott el
8
trate de evitar el uso de esta configuración agregando el módulo de enrutamiento - britishdeveloper.co.uk/2010/06/…
Chris Herring
66
Me encanta el comentario de respuesta "Tal vez sea útil para alguien" ... jaja ... Parece que es útil para una TONELADA de personas, incluido yo mismo.
Paul
126

Respondido en SO aquí , pregunta: 403 - Prohibido en la implementación básica de MVC 3 en iis7.5

Ejecutar aspnet_regiis -i. A menudo he descubierto que necesitas hacer eso para que las aplicaciones 4.0 funcionen. Abra un símbolo del sistema como un Administrator(haga clic con el botón derecho en el icono del símbolo del sistema y seleccione Ejecutar como administrador):

cd \
cd Windows\Microsoft.NET\Framework\v4.xxx.xxx
aspnet_regiis -i

Una vez que se haya instalado y registrado, asegúrese de que su aplicación esté utilizando un grupo de aplicaciones configurado en .NET 4.0.

ACTUALIZACIÓN: acabo de encontrar un problema con este comando. El uso de -i actualizó todos los grupos de aplicaciones a ASP.NET 4.0.

El uso aspnet_regiis -irinstala la versión de ASP.NET pero no cambia ninguna aplicación web a esta versión. También es posible que desee revisar la opción -iru.

Brettski
fuente
A mí también me funcionó. Después de ejecutar aspnet_regiis -i, se instaló UrlMappingModule en IIS.
Manish Gupta
Después de instalar IIS, necesitaba ejecutar aspnet_regiis para que todo funcionara, aunque .NET 4 ya parecía estar registrado.
Brian
Si el marco se instaló antes de IIS, entonces sí necesitará aspnet_regiis.
Brettski
2
No olvide que para un sistema de 64 bits es "Framework64". Es decir, Windows \ Microsoft.NET \ Framework64 \ v4.xxx.xxx
grahamesd
Para este uso, la versión de 64 o 32 bits de aspnet_regiis no importa. Aquí se enumeran algunos casos especiales: msdn.microsoft.com/en-us/library/k6h9cz8h.aspx#Anchor_1
Brettski
34

Yo también me encontré con este error. Toda la configuración y los permisos fueron correctos. Pero olvidé copiar Global.asax en el servidor, y eso es lo que dio el error 403.

Bogdan Litescu
fuente
En mi caso, lo moví accidentalmente con el mouse sin darme cuenta. ¡Gracias!
Mathias Lykkegaard Lorenzen
¡Solo perdí 2 horas porque había pasado por alto copiar este archivo después de borrar mi carpeta de documentos web!
Steven Sproat
10

¡Es por estar demasiado seguro de lo que tú (yo) estamos haciendo!

En mi máquina hay IIS 7 instalado, pero el componente ASP.NET requerido (Panel de control-> Programas-> Activar / Desactivar-> ASP.NET) no lo estaba.

Instalar esto resolvió el problema

savvas sopiadis
fuente
9

Tuve el mismo problema. Este artículo de soporte de Microsoft me lo arregló.
https://support.microsoft.com/en-us/help/2023146/mvc-2-and-asp.net-4-web-forms-applications-that-use-url-routing-might-return-http- 404-errores-cuando-intentan-procesar-sin-extensión-urls-on-iis-7-and-iis-7.5

En el cuadro de diálogo "Activar o desactivar las características de Windows" de la aplicación "Programas y características" del Panel de control de Windows, realice los siguientes pasos:

  1. Navegue al siguiente nodo: Servicios de información de Internet -> Servicios de World Wide Web -> Características HTTP comunes
  2. Asegúrese de que la opción "Redirección de error HTTP" esté seleccionada.

-o-

  1. Navegue al siguiente nodo: Servicios de información de Internet -> Servicios de World Wide Web -> Características de rendimiento
  2. Asegúrese de que la opción "Compresión de contenido estático" esté seleccionada. Después de seleccionar cualquiera de las opciones, haga clic en "Aceptar" para guardar los cambios.

Volver a habilitar el módulo de redirección de errores HTTP o el módulo de compresión de contenido estático garantiza que ASP.NET e IIS sincronicen correctamente los eventos de canalización HTTP. Esto permite que el módulo de enrutamiento de URL procese URL sin extensiones.

Donny V.
fuente
7

Intente aplicar la siguiente configuración que se muestra a continuación:

1) Otorgue los permisos necesarios al IIS_IUSRSusuario en IIS Server(Haga clic derecho en el sitio web y luego Editar permisos> Seguridad).

ingrese la descripción de la imagen aquí

2) Si lo usa .NET Framework 4, asegúrese de que la versión de .NET Framework esté v4.0en la Application Poolque usa su sitio web.

ingrese la descripción de la imagen aquí

3) Abra el símbolo del sistema como administratory ejecute el iisresetcomando para reiniciar IIS Server.

Espero que esto ayude...

Murat Yıldız
fuente
Sugerencia: Si aún recibe los errores de permiso después de esto, es posible que deba hacer un iisreset en el cmd como Administrador después de hacer esto para que su sitio se ejecute en IIS.
Cory Koch
6

En mi caso, el siguiente enfoque me ayudó:

  1. aspnet_regiis -i en Windows\Microsoft.Net\Framework

  2. Agregar módulos a system.webServer

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        ...
    </system.webServer>
Stefan Michev
fuente
Supongo que omitiste el marco. Pero abra cmd como administrador y ejecute aspnet_regiis -i en Windows \ Microsoft.Net \ Framework \ v4.0.30319
DeadlyChambers
5

Compruebe también, si está ejecutando x64, que ha habilitado aplicaciones de 32 bits en la configuración del grupo de aplicaciones

ingrese la descripción de la imagen aquí

David Christiansen
fuente
3

En la casilla de verificación "Precompilar durante la publicación" , recibí el error 403.14 en un servicio web que acababa de escribir en VS2015, así que lo reescribí en VS2013 y recibí el mismo error. En ambos casos tuve "Precompilar durante la publicación" en. Lo desmarqué pero aún recibía el error. En mi caso, también tuve " Eliminar todos los archivos existentes antes de publicar " pero no estaba eliminando todo del directorio de destino en el servidor antes de copiar los nuevos archivos publicados allí. Si no lo hace, se deja un archivo " PrecompiledApp.config " que causa el problema. Una vez que eliminé ese archivo, fui dorado en las versiones VS2013 y VS2015 de mi servicio web.

JTTx
fuente
2

Intenté todo aquí; nada funcionó. El problema estaba en mi Web.configarchivo, el enlace de ensamblaje dependiente de alguna manera se cambió de mínimo 1a mínimo 0.

<!-- was -->
<runtime>
    <assemblyBinding>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" />
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />


<!-- should have been -->
                <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
codeMonkey
fuente
1

Tenga en cuenta que a veces incorrecto Managed pipeline modecausará este error. Hay dos opciones para seleccionar integratedy classic.

Joe.wang
fuente
1

Cómo solucionar "Error HTTP 403.14 - Prohibido El servidor web está configurado para no enumerar el contenido de este directorio"

Este error ocurre cuando tienes MVC 2+ corriendo alojado en IIS 7+, esto es porque ASP.NET 4 no estaba registrado en IIS. En mi caso, estaba creando un proyecto MVC 3 y alojándolo en IIS 7.5.

Para solucionarlo, asegúrese de tener MVC 2 o superior y .Net Framework 4.0 instalado, luego ejecute un símbolo del sistema como administrador y escriba la siguiente línea:

32 bits (x86)

% windir% \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -ir

64 bits (x64)

% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -ir

Vishal Sen
fuente
1

Verifique su archivo Global.asax . En mi caso, estaba vacío.

oyenigun
fuente
1

Si las respuestas principales no funcionan, busque una configuración nombrada PrecompiledApp.configen el directorio de alojamiento y elimínela si existe. Este archivo impide que IISExpress y LocalIIS funcionen correctamente. (Y creo que es un error) El contenido del archivo en mi caso fue:

<precompiledApp version="2" updatable="true"/>

Y estoy 100% seguro de que ese fue el problema con mi caso, ya que probé todo en 2 horas y probé muchas veces con esta configuración.

Una cosa más: no puede usar aspnet_regiisen versiones más nuevas de Windows e IIS, así que intente

dism /online /enable-feature /featurename:IIS-ASPNET45 /all
sotn
fuente
1

Panel de control> activar o desactivar las características de Windows> Servidor web> Desarrollo de aplicaciones

Verifique ASP.NET

Andres Kalev Rebane
fuente
0

También he encontrado este mismo error, a pesar de todas las soluciones proporcionadas por las siguientes razones:

  • DLL faltantes
  • La cadena de conexión de la base de datos apunta a un servidor inaccesible.
eulerfx
fuente
0

En mi caso, faltaban web.config y todos los archivos, excepto la carpeta / bin (no copiados de alguna manera).
Tonto, pero eso fue lo último que revisé.

eitanpo
fuente
0

Recientemente tuve este error y descubrí que el problema fue causado por la función "Redirección HTTP" que no estaba habilitada en mi servidor de Windows. Esta publicación de blog me ayudó a resolver problemas para encontrar la respuesta (a pesar de ser versiones anteriores de Windows Server): http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable -not-working-with-iis.aspx para los servidores más nuevos vaya a Administración de equipos, luego desplácese hacia abajo hasta el rol de Servidor web y haga clicadd role services

Seph
fuente
0

Con el proyecto ASP.NET con C # 4.5, he resuelto este problema instalando la extensión ASP.NET en el Instalador de plataforma web

Kamil Gareev
fuente
0

También una cosa más puede ser posible

instalar .net framework 4.0 manualmente

Esta solución es para IIS7 en la ventana 7

cmd abierto con administración previa

vaya al directorio "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319"

escriba aspnet_regiis.exe -i

llegó a su administrador de inet escribiendo el comando de ejecución "inetmgr"

actualiza tu IIS7

Recargar el sitio.

Iftikhar Ali Ansari
fuente
0

Sé que tuvo este problema en un host interno, pero ya había experimentado un problema así en un host externo y en mi caso tenía su propia resolución, tal vez podría ahorrarle tiempo a alguien:

De hecho, mi sitio web se DEtuvo por algún motivo que actualmente desconozco, para verificar si tiene el mismo problema, en la página principal del Panel del sitio web vaya a Web -> Sitios web y luego seleccione el nombre de dominio de su sitio web de la lista , después de eso, en el lado derecho de la página que acaba de abrir, verifique si ve la palabra COMENZADO; de lo contrario, si ve la palabra DETENIDO, vuelva a comenzar. Eso es todo.

Mohammad Musavi
fuente
0

Sé que este es un tema antiguo, pero también puede obtener este error (cuando está depurando) si tiene una carpeta con el mismo nombre que una ruta en un controlador.

Por ejemplo, si tiene un UserController, con una ruta llamada / User y TAMBIÉN tiene una carpeta en su solución llamada "User", IISExpress intentará explorar la carpeta en lugar de mostrar su vista.

Jirafa misericordiosa
fuente
0

Después de probar todas las soluciones sugeridas aquí, encontré otra posible solución: URLScan

El IIS tenía WebDAV deshabilitado, incluso en la configuración web. de mi aplicación, se eliminó el controlador y el módulo de WebDAV. PUT todavía devolvió un 403 - Prohibido sin ninguna entrada de registro en los registros de IIS. (GET / POST funcionó bien).

Resulta que IIS tenía un filtro ISAPI activo (el URLScan) habilitado que impedía todos los PUT. Después de eliminar URLScan, funcionó para mí.

Felix Beifuß
fuente
0

Mi situación era completamente diferente a cualquiera de estos y el 403: el mensaje de error prohibido era un poco de una pista falsa.

Si su función Application_Start () en el módulo Global.asax intenta acceder a web.config y una entrada a la que hace referencia no está allí, IIS se bloquea y (por alguna razón) arroja el 403: Mensaje de error prohibido.

Vuelva a verificar que no le falta una entrada en el archivo web.config que intenta acceder en su módulo Global.asax.

Jason Marsell
fuente
0

En caso de que sea como yo y tenga una aplicación que use NHibernate y las respuestas anteriores no hayan resuelto su problema.

Debe mirar la cadena de conexión en su aplicación; posiblemente en el archivo webconfig para garantizar que sea correcto.

wale A
fuente
-1

He estado usando la suplantación de identidad:

<system.web>
    <identity impersonate="true" userName="domain\username" password="password"/>
</system.Web>

Al subir al servidor, debe dar acceso al nombre de usuario a la Temporary ASP.NETcarpeta Archivos para que pueda leer / escribir / ejecutar correctamente:

C:\Windows\Microsoft.NET\"frameworkversion"\"aspversion"\Temporary ASP.NET Files

Obviamente reemplace "frameworkversion" y "aspversion" con las versiones que está utilizando.

Dalemac
fuente
-1

Paso 1: Seleccione el sitio para el que se produce el error HTTP en IIS y luego haga clic en Exploración de directorios como se muestra en la imagen a continuación:

Paso 2: en la ventana de exploración de directorios en IIS, haga clic en Activar en acciones en el lado derecho como se muestra en el siguiente diagrama:

Ahora la exploración de directorios está habilitada para su sitio web asp.net, simplemente reinicie la aplicación web en IIS y explore el sitio en su navegador y vea el resultado.

usuario3589806
fuente
-1

Estoy usando: Win Server 2012 R2 / IIS 8.5 / MVC4 / .Net 4.5

Si ninguno de los anteriores funcionó, intente esto:

Desmarque "Precompilar durante la publicación"

Esto pateó mi trasero por unos días.

D. Kermott
fuente
@ d-kermott, ¿puede ser que mi [find] [( stackoverflow.com/a/31319136/912481 ) también sea útil para usted también?
Kamil Gareev
-1

Tuve este problema, pero se solucionó fácilmente yendo al Administrador de servicios de información de Internet (IIS), haciendo doble clic en Exploración de directorios y haciendo clic en Habilitar.

En mi caso, pude acceder a los archivos directamente pero no pude acceder a las carpetas.

Scott Izu
fuente
-1

Había escrito mal la dirección IP en un dígito, lo que significaba que iba a uno de mis otros servidores. Muy confuso ya que obtienes una página de error .NET pero desde la máquina incorrecta.

NickG
fuente