Error HTTP MVC4 403.14 - Prohibido

88

He creado una aplicación web .net4.5 ASP.NET MVC4 que funciona bien localmente (IIS Express y servidor de desarrollo) pero una vez que la implemento en mi servidor web, arroja el error 403. Instalé .Net 4.5RC en el servidor e incluso probé el aspnet_regiis -i bit que todos recomendaron para sus problemas con 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 la que no funciona.

mithun_daa
fuente
Me encontré con este mismo problema cuando creé una nueva aplicación asp.net 4.5 Web Forms . Funcionó bien localmente (IIS 7.5), pero cuando se implementó en el servidor de prueba (también IIS 7.5), la mayoría de mis archivos javascript y css empaquetados y minificados no se cargaban con 404 Not Found. ¡La respuesta a continuación sobre runAllManagedModulesForAllRequests resolvió el problema por mí!
ClearCloud8
Es posible que haya respondido esta pregunta en: stackoverflow.com/questions/24343788/…
fsbf
<system.webServer> <modules runAllManagedModulesForAllRequests = "true" /> </system.webServer>
Jinto John

Respuestas:

172

Tratar

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

Vía

/server/405395/unable-to-get-anything-except-403-from-a-net-4-5-website

MarkKGreenway
fuente
1
Tenía eso en su lugar, hizo todo, y todavía solo funcionan los sitios MVC 4. Tiene que haber algún otro truco que deba estar en su lugar para que esto funcione.
Maxim V. Pavlov
1
Esta. Probé todas las demás soluciones de stock sin alegría, pero esta fue la que solucionó el problema.
Julia Hayward
1
Querido amigo, lo hago, pero no funciona. Realmente, estaba trabajando con MVC 4 y VisualStudio 2012, mi proyecto funciona bien hasta ayer, pero después de algunos cambios habituales en mis códigos, este error aumenta en la página predeterminada (inicio / índice). ¿Puede alguien ayudarme por favor? ..
A.Dara
4
Esta solución no es apropiada para este problema (consulte el enlace en la respuesta de Jason Koopmans). mucho mejor es descargar la revisión relacionada aquí microsoft.com/en-us/download/…
Ahmad Ibrahim
@AhmadIbrahim, de hecho, es una solución al problema. La solución es solo para 64 bits, la pregunta dice claramente 32 bits. Hay ciertas configuraciones para las que RAMMFAR es la solución de trabajo más confiable y agrega una carga mínima del servidor si las CDN se utilizan adecuadamente.
MarkKGreenway
22

El error 403.14 es el código de error HTTP por no poder enumerar el contenido 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 ejecutar la versión adecuada de .NET framework (es decir, no está configurado en .NET 2.0
  4. Estás utilizando la canalización integrada en tu grupo de aplicaciones
  5. .NET 4.5 está registrado en IIS. Consulte esta publicación para ver un problema / resolución similar

Por lo general, ayd son los problemas más importantes que rodean las implementaciones de MVC en IIS

Tommy
fuente
1. No he configurado el sitio web como una aplicación. 2. Tengo .net 4.5 instalado, 3. mi grupo de aplicaciones tenía como objetivo el marco correcto. 4. Mi grupo estaba configurado para usar clásico, lo cambié a Integrado pero no ayudó. 5. Estoy bastante seguro de que 4.5 está registrado.
mithun_daa
1
@mithun_daa - Si no ha configurado su sitio web como una aplicación, es bastante fácil -> haga clic con el botón derecho en el directorio virtual / sitio web y Convertir a aplicación (o agregar Aplicación, la terminología se me escapa en este momento)
Tommy
¿Es esto algo específico de MVC4? Porque nunca configuré mis proyectos MVC3 como aplicaciones y funcionan bien.
mithun_daa
Entonces podría ser cómo lo está implementando -> pero cualquier aplicación web .NET debe configurarse como una aplicación en IIS. Sin embargo, si solo los coloca en el sitio web predeterminado, entonces se está ejecutando en la aplicación del sitio web predeterminado. Asegúrese de que el grupo de aplicaciones del sitio web predeterminado esté configurado correctamente (.NET 4 / integrado). Cuando crea un directorio virtual / sitio web virtual en IIS, también tiene la opción de configurarlo para su propia aplicación.
Tommy
Probablemente lo confundí, pero ninguno de los sitios está en el sitio web predeterminado. Hago clic derecho en "Sitios" en IIS7 y elijo "Agregar sitio web". Así es como me ha ido.
mithun_daa
11

Quizás ... Si utiliza el Asistente de publicación (como lo hice yo) y selecciona la casilla de verificación "Precompilar durante la publicación" (como hice yo) y ve los mismos síntomas ...

Sí, me 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 redistribución.

Con suerte, esto soluciona a algunas personas.

Brian Kirkpatrick
fuente
Si tiene esto, una posible causa raíz es tener una versión diferente de una biblioteca externa en el entorno de producción. Hice compilar mi aplicación mvc con una versión más reciente de un dll de terceros y una versión anterior en el servidor de producción.
ValGe
Aquí está el niño maravilla, el niño, el hombre milagroso, el fenómeno, lo imparable, el rey, esto es por @Brian Kirkpatrick damas y caballeros
Luis Villarroel
10

Windows-> Inicio -> Activar y desactivar las funciones de viudas

Asegúrese de marcar las opciones requeridas en

ingrese la descripción de la imagen aquí

Kurkula
fuente
6

Antes de aplicar

runAllManagedModulesForAllRequests="true"/>

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

  <system.webServer>
    <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
    </modules>

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

Jason Koopmans
fuente
Esta es la verdadera respuesta. ¡Gracias!
Spivonious
5

Hay un Refactor -> Rename Bug en Visual Studio 2012 que renombró incorrectamente el "id" dentro del valor de cadena literal del parámetro url en mi RouteConfig.cs. Esto provocó 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 }
);
user641770
fuente
Para mí, descubrí hace mucho tiempo que puedo ingresar nullpara el nameparámetro para evitar inventar un nombre para cada ruta. Resulta que esto también causa un 403 a veces (solo en nuestro entorno prod, Win Server 2008 R2 ejecutando .NET 4.5.1, MVC 5 en un proyecto VS2013. Para resolver, agregué un nombre para cada ruta.
tristankoffee
2

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

marcusdev
fuente
2

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 que apunte a su máquina local y luego apunte un nuevo sitio web de IIS local a esa carpeta (con la entrada de encabezado de host correspondiente), encontrará que funciona.

Mastro
fuente
¿Por qué publicar la misma respuesta en varios lugares?
devnull
8
Porque estaba tratando de encontrar la solución y se refiere a ambos. Salva a alguien de cazarlo.
Mastro
No debería publicar respuestas duplicadas. Esto es todo lo que puedo decir.
devnull
1
<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/> 
 </system.webServer>

U puede usar el código anterior

Jinto John
fuente
1

Había configurado el grupo de aplicaciones de la nueva aplicación DefaultAppPoolen IIS, que obviamente está usando la Classictubería con .NET v.2.0.

Para resolver el problema, creé un nuevo grupo de aplicaciones usando la Integratedcanalización 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 Settingsy luego elija el nuevo grupo de aplicaciones para la aplicación.

Leniel Maccaferri
fuente
0

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

¿Es esto lo que has probado? de lo contrario, necesitamos más información sobre las versiones del servidor de producción y desarrollo

MarkKGreenway
fuente
Lo siento, pero no entendí lo que querías decir. Este es un servidor de 32 bits. He actualizado mi publicación para agregar más información.
mithun_daa
Ahhh ... ¿Están en grupos de aplicaciones separados?
MarkKGreenway
Sí, de hecho, cada uno de mis sitios tiene sus propios grupos de aplicaciones.
mithun_daa
0

Tengo un problema un poco diferente, en el servidor 2012 de alguna manera olvidé habilitar asp.net 4.5, así que si tiene este problema, verifique que lo habilite.

Volodymyr Bilyachat
fuente
0

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

Resolví este problema desinstalando todos los elementos ASP.NET en Programas y características, luego reinstalando ASP.NET así con el Administrador del servidor usando Agregar roles y características: elegí la instalación basada en funciones o basada en roles, elegí mi servidor y luego para Seleccionar rol de servidor, eligió 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 reinstaló 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 existe una utilidad que puede ejecutar para registrar ASP.NET sin reinstalar, pero parece que ya no está disponible.

fsbf
fuente
0

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

Descubro esto comparando los dlls de la versión antigua con los Dlls de mi nueva versión (eso no funcionaba)

Wagner
fuente
0

En mi caso, la página predeterminada de mi aplicación era index.html, que faltaba en las opciones de documento predeterminadas. Agregarlo solucionó el error 403.14 Forbidden.

Erik K.
fuente
0

En mi caso, el problema fue causado por ActionFilterAttribute personalizado, que era una especie de atributo de filtro global. El atributo creó una instancia de un servicio a través de Autofac, pero el servicio se bloqueó en el constructor:

public ActionFilterAttribute()
{
    _service = ContainerManager.Resolve<IService>();
}

public class Service: IService
{ 
    public Service()
    {
        throw new Exception('Oops!');
    }
}
Artem Vertiy
fuente
0

En mi caso, ni las características de Windows ni tampoco aspnet_regiis -ihicieron el trabajo. Después de horas de investigar en Internet, creé mi propia solución:

  1. En el Administrador de IIS en Módulos cambié heredar a local en el nodo UrlRoutingModule-4.0:

    ingrese la descripción de la imagen aquí

  2. En web.config pegué una combinación de algunos consejos de este foro:

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="UrlRoutingModule-4.0"></remove>
            <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition=""></add>
        </modules>
    </system.webServer>
    

Espero eso ayude

Sylwia M
fuente