page net mvc handling error custom create asp asp.net-mvc application-error

asp.net mvc - net - ¿Cómo resolver la excepción "El archivo no existe"?



custom error mvc 5 (6)

Tengo un sitio básico de ASP.NET MVC2 que registra un único error "El archivo no existe" cada vez que se carga una vista (no vistas parciales). Estoy bastante seguro de que esto se debe a que estoy haciendo referencia a un archivo, de la página maestra, que no existe, pero no puedo averiguar cuál es.

El seguimiento de la pila no es útil (ver más abajo). ¿Alguien tiene algún consejo sobre cómo depurar mejor esto?

File does not exist. : at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response) at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context) at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)


Agregue el siguiente método en el archivo Global.asax

protected void Application_Error(object sender, EventArgs e) { Exception ex = Server.GetLastError(); Log.Error("An error occurred", ex); Log.Error("Requested url: ", Request.RawUrl); }

Request.RawUrl Dar la URL exacta que da un error.

Ahora en tu archivo de registro deberías ver:

Requested url: /favicon.ico


Como usted dice, es probable que falte un archivo o imagen a la que hace referencia su página maestra. Para capturar el error, agregue el siguiente controlador de errores a su Global.asax

protected void Application_Error(object sender, EventArgs e) { Exception ex = Server.GetLastError(); if (ex.Message == "File does not exist.") { throw new Exception(string.Format("{0} {1}", ex.Message, HttpContext.Current.Request.Url.ToString()), ex); } }

Esto debería indicarle qué recurso está solicitando la página.


En mi caso recibí el mismo error, aunque no encontré ningún "error 404" en la consola del navegador. Incluso revisé el archivo maestro y no pude encontrar ningún archivo faltante. Resultó que el navegador espera que favicon.ico esté en la raíz del sitio. Creé un favicon.ico en la raíz de mi sitio y el problema desapareció. Este fue un buen sitio web para generar el ícono: http://www.favicon.cc/


O si está realizando una depuración, puede poner la siguiente línea en la ventana Inmediato para verificar:

? HttpContext.Current.Request.Url.ToString ()


Verifique sus archivos CSS para url (resource_path) donde no existe "resource_path".

Estaba recibiendo la misma excepción. El problema encontrado fue en el archivo CSS donde faltaba un archivo de imagen del proyecto y no en el sistema de archivos. Por ejemplo, una línea como:

background-image: url( /images/foo.png );

Donde el archivo "foo.png" no está en la carpeta de imágenes.

Puede emitir la última excepción como una HttpException para obtener el código de estado HTML:

HttpException httpEx = Server.GetLastError() as HttpException; if( httpEx != null ) httpEx.GetHttpCode(); // Will be HTML status code, 404 in this case.

Pero no contiene ninguna información de qué archivo falta. Encontré el archivo faltante al verificar cada declaración de clase CSS en la página donde ocurría este error.


en mi caso, faltaba una página de inicio predeterminada, es decir, default.aspx, que fue el culpable.

Así que agregar el archivo default.aspx solucionó el problema.

Sin embargo, este proyecto no requiere una página predeterminada, ya que no es un proyecto orientado al usuario.

Era más bien una aplicación de middleware para interconectar sistemas heredados a través de la web.