2010-06-27 17 views
9

Ho preso il codice di un sito Web da qualcun altro per finire e ho riscontrato il problema che ogni volta che carico una pagina, ottengo un'eccezione 'File non presente' catturata nel gestore Application_Error nel mio file Global.asax.Il file non esiste eccezione in VS2010

Ero curioso di cosa si trattava, quindi ho provato a creare soluzioni completamente nuove sia con un sito Web che con un'applicazione Web, con e senza una pagina master e una sola pagina .aspx - entrambi avevano lo stesso problema.

Questo utilizza VS2010 e .NET 3.5, su Windows 7 a 64 bit.

Qualche idea per favore? La traccia dello stack non mi dice assolutamente nulla e il fatto che sto ottenendo nuovi progetti è strano.

Eccezione dello stack:

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

la mia prima ipotesi ... http: //webdesign.about.com/od/favicon/f/blfaqfavicon4.htm – agradl

risposta

1

Non sono mai arrivato in fondo a questo punto e una ricostruzione in ritardo del mio computer lo ha risolto.

3

Qual è il nome del file nella eccezione? Se il nome del file o il percorso è offuscato, è probabile che si verifichi un danneggiamento nei file temporanei di ASP.NET. Prova "clean solution" e "rebuild solution" ed eseguilo di nuovo.

In caso contrario, sarà necessario pubblicare ulteriori informazioni, incluso il messaggio di eccezione completo, non solo lo stack di chiamate. Sta succedendo sulla pagina di default del sito? Il progetto web è selezionato come progetto di avvio? Sta succedendo nel server Web di Visual Studio o IIS?

+0

Il problema è che non vi sono nomi di file o informazioni extra nell'eccezione. Ho pubblicato tutto ciò che mi dispiace. Non mi dice nulla di utile. Se metto anche tutte le eccezioni su tutte le eccezioni, non ottengo nulla - tocca comunque il gestore delle eccezioni nel file Global.asax e da nessun'altra parte. Ho anche chiuso Visual Studio e creato due nuove soluzioni di test, come detto, in modo che la pulizia/ricostruzione non sia di aiuto. – Michael

+0

OK, che si qualifica come piuttosto strano. Lo stack di chiamate mi dice che ci si trova nella pipeline di ASP.NET e si sta configurando per caricare ed elaborare una pagina, ma (probabilmente) non si dispone di una pagina da caricare. Può darsi che il sito non sappia quale sia la pagina predefinita, quindi forse puoi provare a selezionare una pagina e renderla la pagina di avvio predefinita. Oppure con la pagina aperta in Visual Studio, è sufficiente fare clic con il pulsante destro del mouse sulla pagina nella finestra di modifica e selezionare Visualizza nel browser; questo ti direbbe se c'è un problema con la pagina. –

+0

Ho provato grazie. Succede con qualsiasi pagina, solo quando si utilizza Visual Studio. Una volta eseguito il deploy sul mio server web (Windows Server 2003 R2) va bene e non ci sono errori. All'interno di Studio, c'è un set di pagine predefinito, quindi non sarà così. Dispari: suona come un problema con VS2010 - non lo ha fatto con VS2008. – Michael

2

Rilevo il mio errore in Application_Error in gloal.asax Ho anche ricevuto Request.Url.ToString(), questo ti darebbe la risorsa colpevole. Ad esempio, nella mia app ho scoperto che Application_Error si lamenta anche di favicon.ico, e anche se alcuni file mancano che potresti fare riferimento al tuo css, verrebbero catturati dall'evento Application_Error.

in realtà, controlla questo blog ad esempio, parla dello stesso problema e utilizza Request.Url per scoprire qual è la risorsa in questione. Questo dovrebbe aiutare http://dotbert.loedeman.nl/httpexception-file-does-not-exist

9

Il trucco per capire quale file non esiste è utilizzare il seguente codice nel metodo 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(); 
} 

In questo modo verrà recuperato il nome del file mancante e la pagina originale da cui proviene la richiesta.

+1

Ho ricevuto questo errore una volta al giorno alla prima esecuzione dell'app in modalità di debug, e usando questa risposta ho scoperto che era una richiesta di 'favicon.ico', anche se ho aggiunto favicon alla' IgnoreRoutes'. Qualche idea su come liberarsene del tutto, oltre ad aggiungere un favicon.ico alla soluzione? – Webbie4

+0

@ Webbie4: No, mi dispiace. Non ne ho idea. –

1

Ho risolto questo problema per la mia situazione ... ho scoperto che le proprietà del progetto erano tornate a "Usa pagina corrente" (in VS 2010 - Proprietà progetto | Opzioni di avvio | Avvia azione).

La cosa strana è che avevo impostato le opzioni di avvio su "Pagina specifica:" - così da qualche parte lungo la linea VS 2010 ne perse traccia e tornarono automaticamente a "Usa pagina corrente".

Rob.

Problemi correlati