MVC4 HTTP Error 403.14 – Prohibido

Tengo una aplicación web .NET4.5 ASP.NET MVC4 que funciona bien localmente (IIS Express y servidor de desarrollo) pero una vez que la despliego a mi servidor web arroja el error 403. He instalado .Net 4.5RC en el servidor e incluso probé el bit aspnet_regiis -i que todos recomendaron para sus problemas con las versiones anteriores de MVC / .Net, pero no ayudó.

¿Algunas ideas?

EDITAR : Más información sobre la situación. El servidor es de 32 bits y tengo otras 4 aplicaciones MVC3 que funcionan bien. Es solo mi aplicación MVC4 que no funciona.

    El error 403.14 es el código de error HTTP por no poder enumerar los contenidos de un directorio. Por favor, asegúrese de que

    1. Ha configurado el sitio web como una aplicación en IIS
    2. Tiene .NET 4.5 instalado en el servidor
    3. Ha configurado el grupo de aplicaciones para que ejecute la versión adecuada de .NET Framework (es decir, no está configurado para .NET 2.0
    4. Está utilizando la interconexión integrada en su grupo de aplicaciones
    5. .NET 4.5 está actualmente registrado en IIS. Por favor, mira esta publicación para un problema / resolución similar

    Por lo general, ayd son los mayores problemas que rodean las implementaciones de MVC a IIS

    Tal vez … si usa el asistente de publicación (como yo lo hice) y selecciona la checkbox “Precomstackr durante la publicación” (como yo lo hice) y ve los mismos síntomas …

    Sí, me di un golpe en la cabeza, pero después de desmarcar esta casilla, una configuración aparentemente no relacionada, todos los síntomas descritos desaparecen después de la reinstalación.

    Espero que esto solucione algunas personas.

    Windows-> Start -> Activar y desactivar las características de las viudas

    Asegúrate de marcar las opciones requeridas en

    enter image description here

    Antes de aplicar

     runAllManagedModulesForAllRequests="true"/> 

    considere el siguiente enlace que sugiere una alternativa menos drástica. En la publicación, el autor ofrece la siguiente modificación a la web.config local:

           

    http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html

    Hay un Refactor -> Renombrar error en Visual Studio 2012 que erróneamente cambió el nombre del “id” dentro del valor literal de la cadena del parámetro url en mi RouteConfig.cs. Esto causó un 403.14 en una configuración nueva y correcta en Windows Server 2012 y Windows Server 2008 R2.

     routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 

    fue cambiado a

     routes.MapRoute( name: "Default", url: "{controller}/{action}/{renamed_text}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 

    También puede obtener un 403 si al probar con el servidor de desarrollo está utilizando una canalización integrada y luego instalarlo como el modo de canalización clásico en su servidor web en vivo IIS 7.5, también me faltaba mi carpeta app_data, que también era necesaria

    Si está ejecutando IIS 8.5 en Windows 8 o Server 2012, es posible que la ejecución de mvc 4/5 (.net 4.5) no funcione en un directorio virtual. Si crea una entrada de host local en el archivo de host para señalar a su máquina local y luego señala un nuevo sitio web de IIS local a esa carpeta (con la entrada de encabezado de host correspondiente) encontrará que funciona entonces.

        

    U puede usar el código anterior

    Establecí el grupo de aplicaciones de la nueva aplicación en DefaultAppPool en IIS, lo que obviamente está utilizando la canalización Classic con .NET v.2.0 .

    Para resolver el problema, creé un nuevo Pool de aplicaciones utilizando Integrated pipeline y .NET v4.0 . solo para esta nueva aplicación y luego todo comenzó a funcionar como se esperaba.

    No olvide asignar este nuevo grupo de aplicaciones a la aplicación. Seleccione la aplicación en IIS, haga clic en Basic Settings y luego elija el nuevo grupo de aplicaciones para la aplicación.

    el que veo con más frecuencia recientemente es IIS y permite que se ejecuten aplicaciones de 32 bits

    Es esto lo que has intentado. de lo contrario, necesitamos más información sobre las versiones de producción y servidor de desarrollo

    Tengo un problema un poco diferente, en el servidor 2012 de alguna manera me olvidé de habilitar asp.net 4.5 así que si tienes este problema, verifica que lo habilites.

    Estoy ejecutando Windows Server 2012 R2 en Azure y ASP.NET 4.5, IIS 8

    Resolví este problema desinstalando todos los elementos de ASP.NET en Progtwigs y características, luego reinstalé ASP.NET de esta manera con el Administrador del servidor usando Agregar roles y características: elegí la instalación basada en funciones o basada en funciones, seleccioné mi servidor y luego para Seleccionar servidor Elegido por servidor Servidor web (IIS) / Servidor web / Desarrollo de aplicaciones, luego hizo clic en ASP.NET 4.5, confirmó la instalación de un requisito previo y luego volvió a instalar ASP.NET 4.5.

    Mis búsquedas anteriores me habían llevado a creer que el problema en realidad proviene de un problema de registro con ASP.NET. Con versiones anteriores de ASP.NET, en realidad hay una utilidad que puede ejecutar para registrar ASP.NET sin reinstalar, pero parece que ya no está disponible.

    Resuelvo el problema abriendo el estudio visual, ampliando las referencias y cambiando la propiedad “Copiar local” a “Verdadero”.

    Descubrí esto comparando los dlls de la versión anterior con los Dlls de mi nueva versión (que no funcionaba)

    En mi caso, la página predeterminada de mi aplicación era index.html que faltaba en las opciones predeterminadas del documento. Al agregarlo, se corrigió el error prohibido 403.14.

    En mi caso, el problema fue causado por ActionFilterAttribute personalizado, que era un tipo de atributo de filtro global. El atributo instanciaba un servicio a través de Autofac pero el servicio se bloqueaba en el constructor:

     public ActionFilterAttribute() { _service = ContainerManager.Resolve(); } public class Service: IService { public Service() { throw new Exception('Oops!'); } } 

    En mi caso, ni las características de Windows ni aspnet_regiis -i no hicieron el trabajo. Después de horas de cavar en Internet, hice mi propia solución:

    1. En el Administrador de IIS en Módulos, cambié inherit to local en el nodo UrlRoutingModule-4.0:

      enter image description here

    2. En web.config pegué una mezcla de algunos consejos de este foro:

             

    Espero eso ayude