c# - La página no se puede mostrar porque se ha producido un error interno en el servidor
asp.net asp.net-mvc (7)
Acabo de recibir este error y fue causado por un tipo MIME de contenido estático duplicado en el web.config
Este error se devolvió solo en archivos estáticos; por ejemplo, imágenes, css, js, todos los archivos indicaban este error (texto en sí mismo, ningún otro html o texto en la respuesta).
La forma de depurar esto es buscar en la configuración web en contenido estático. Aquí tenemos una extensión de archivo json cargada. Esto fue requerido en IIS7 pero matará la aplicación si se usa en IIS8 porque json ahora está precargado en el nivel del servidor.
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
¡Así que la solución es eliminar cualquiera de estas entradas de mimeType de a una por vez para confirmar cuáles son necesarias y cuáles matan a tu aplicación!
Instalé el sitio web en mi máquina local utilizando IIS 7 con éxito. Pero cuando lo implementé en el servidor en vivo, recibí el siguiente error:
"La página no se puede mostrar porque se ha producido un error interno del servidor" Nada más.
Utilizando el mismo IIS 7 en vivo y configurado para tener Detailed errors
en el módulo de páginas de error, pero sigue obteniendo el mismo. ¿Cuál puede ser una razón?
Gracias
Creo que el mejor primer acercamiento es asegurarse de activar los mensajes de error detallados a través de su archivo web.config, así:
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed"></httpErrors>
</system.webServer>
</configuration>
Después de hacer esto, debería obtener un mensaje de error más detallado del servidor.
En mi caso particular, el error más detallado señalaba que mi sección <defaultDocument> del archivo web.config no estaba permitida en el nivel de la carpeta donde había colocado mi web.config. Dijo "Esta sección de configuración no se puede usar en esta ruta. Esto sucede cuando la sección está bloqueada en un nivel principal. El bloqueo es por defecto (overrideModeDefault =" Denegar "), o se establece explícitamente mediante una etiqueta de ubicación con overrideMode =" Denegar "o el legado allowOverride =" false "."
En mi caso, configurar httpErrors
y similares en Web.config no ayudaron a identificar el problema.
En cambio, lo hice:
- Active el "Seguimiento de solicitud fallido" para el sitio web con el error.
- Configuré una traza para los errores de HTTP 350-999 (por si acaso), aunque sospeché 500.
- Llamado a la URL errónea de nuevo.
- Visto en la carpeta de registro ("% SystemDrive% / inetpub / logs / FailedReqLogFiles" en mi caso).
- Abrió uno de los archivos XML en Internet Explorer.
Luego vi una entrada con una información de excepción detallada. En mi caso fue
/? / C: / Websites / example.com / www / web.config (592): No se puede agregar una entrada de colección duplicada de tipo ''mimeMap'' con el atributo clave único ''fileExtension'' establecido en ''.json''
Ahora pude resolverlo y corregir el error. Después de eso, desactivé "Falló el seguimiento de solicitudes" nuevamente.
Lo he arreglado Tenía la siguiente sección in web.config
:
httpErrors existingResponse="PassThrough"
Cuando lo elimine, recibí un error real
Modifique su web.config para mostrar los detalles del error del servidor:
<system.web>
<customErrors mode="Off" />
</system.web>
Es posible que también deba eliminar / comentar la siguiente sección httpErrors
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="404" />
<error statusCode="404" path="/Error/Error404" responseMode="ExecuteURL" />
<remove statusCode="500" />
<error statusCode="500" path="/Error/Error500" responseMode="ExecuteURL" />
<remove statusCode="403" />
<error statusCode="403" path="/Error/Error403" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
Según mi experiencia, si tiene un error del servidor directamente, esto puede deberse a una discrepancia en la versión del ensamblado.
Compruebe lo que se declara en web.config y el ddl real en el proyecto de la carpeta bin.
Para aquellos de ustedes que aciertan a esta entrada porque se clasifica alto para la frase:
"The page cannot be displayed because an internal server error has occurred."
En mi situación personal con este mensaje de error exacto, había activado python 2.7 pensando que podía usar algo de Python con mi API .NET. Luego tuve ese mensaje de error exacto cuando intenté implementar una versión estándar de la API o MVC de visual studio pro 2013. Estaba implementando en una aplicación web de nube azul.
Espero que esto ayude a cualquiera con mi misma experiencia. Ni siquiera pensé en apagar Python hasta que encontré esta suggestion .
parece que funciona después de que comencé esta línea en web.config
<compilation debug="true" targetFramework="4.5.2" />