2010-06-27 21 views
9

He reemplazado el código de un sitio web de otra persona para finalizar y me he dado cuenta de que cada vez que carga una página, aparece una excepción 'El archivo no existe'. en el controlador Application_Error en mi archivo Global.asax.El archivo no existe Excepción en VS2010

Tenía curiosidad de lo que era, así que intenté crear soluciones totalmente nuevas tanto con un sitio web como con una aplicación web, tanto con y sin una página maestra como una página .aspx: ambas tenían el mismo problema.

Esto está usando VS2010 y .NET 3.5, en Windows 7 de 64 bits.

¿Alguna idea por favor? El rastro de la pila no me dice absolutamente nada y el hecho de que lo estoy obteniendo con nuevos proyectos es extraño.

Excepción Seguimiento de la pila:

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) 
+1

mi primera conjetura ... http: //webdesign.about.com/od/favicon/f/blfaqfavicon4.htm – agradl

Respuesta

1

Nunca llegué al fondo de esto tristemente y una reconstrucción vencida de mi computadora lo ordenó.

3

¿Cuál es el nombre del archivo en la excepción? Si el nombre del archivo o la ruta están ofuscados, es probable que tenga un daño en los archivos temporales de ASP.NET. Pruebe "solución limpia" y "reconstruya solución" y ejecútelo nuevamente.

De lo contrario, tendrá que publicar más información, incluido el mensaje de excepción completo, no solo la pila de llamadas. ¿Esto está sucediendo en la página predeterminada del sitio? ¿El proyecto web está seleccionado como el proyecto de inicio? ¿Esto está sucediendo en el servidor web de Visual Studio o IIS?

+0

El problema es que no hay nombre de archivo ni información adicional en la excepción. He publicado todo lo que siento. No me dice nada útil. Si también detengo todas las excepciones, no obtengo nada; todavía golpea al manejador de excepciones en el archivo Global.asax y en ninguna otra parte. También cerré Visual Studio y creé dos nuevas soluciones de prueba, como se mencionó, así que limpiar/reconstruir no ayudará. – Michael

+0

OK, eso califica como bastante raro. La pila de llamadas me dice que estás en la tubería de ASP.NET, y está configurando para cargar y procesar una página, pero (probablemente) no tiene una página para cargar. Es posible que el sitio no sepa cuál es la página predeterminada, por lo que quizás pueda intentar seleccionar una página y convertirla en la página de inicio predeterminada. O con la página abierta en Visual Studio, simplemente haga clic derecho en la página en la ventana de edición y seleccione Ver en el navegador; esto te diría si hay un problema con la página. –

+0

Intenté eso gracias. Ocurre con cualquier página, solo cuando se usa Visual Studio. Una vez que despliegue en mi servidor web (Windows Server 2003 R2) está bien y no hay errores. Dentro del estudio, hay un conjunto de páginas predeterminado, por lo que no será eso. Impar - suena como un problema con VS2010 - no hizo esto con VS2008. – Michael

2

Detecto mi error en Application_Error dentro de gloal.asax También obtengo Request.Url.ToString(), esto le daría el recurso culpable. Por ejemplo, en mi aplicación, encontré que Application_Error incluso se queja del favicon.ico, y también si le faltan algunos archivos que podría estar consultando desde su css, quedaría atrapado por el evento Application_Error.

en realidad, consulte este blog por ejemplo, habla sobre el mismo problema y utilizando el Request.Url para descubrir cuál es el recurso en cuestión. Esto debería ayudar http://dotbert.loedeman.nl/httpexception-file-does-not-exist

9

El truco para averiguar qué archivo no existe es utilizar el siguiente código en el método Application_Error.

protected void Application_Error(Object sender, EventArgs e) 
{ 
    Exception ex = Server.GetLastError().GetBaseException(); 
    string file = HttpContext.Current.Request.Url.ToString(); 
    string page = HttpContext.Current.Request.UrlReferrer.ToString(); 
} 

Esto recuperará el nombre del archivo que falta y la página original de la que procede la solicitud.

+1

He estado recibiendo este error una vez al día en la primera ejecución de la aplicación en modo de depuración, y al usar esta respuesta descubrí que era una solicitud de 'favicon.ico', aunque agregué favicon al' IgnoreRoutes'. ¿Alguna idea sobre cómo deshacerse de ella por completo, aparte de agregar un favicon.ico a la solución? – Webbie4

+0

@ Webbie4: No, lo siento. No tengo idea. –

1

Resolvió esto para mi situación ... Resultó que las propiedades del proyecto habían vuelto a "Usar página actual" (en VS 2010 - Propiedades del proyecto | Opciones de inicio | Acción de inicio).

Lo curioso es que había establecido las Opciones de inicio en "Página específica:" - por lo que en algún lugar a lo largo de la línea VS 2010 perdió la ruta y de manera predeterminada regresó a "Usar página actual".

Rob.

Cuestiones relacionadas