2011-01-07 9 views
59

ottengo un errore:mvc: la favicon.ico cerca anche un controller?

"The controller for path '/favicon.ico' was not found or does not implement IController"

poi ho pensato: come fa sapere il quadro di quali file si deve creare un'istanza di un controllo, perché la stessa cosa è vera per lo script, CSS e altri file?

(mai pensato, ma ora la favicon si lamenta, mi chiedevo ....)

Ma torniamo all'errore, perché che si verificano?

+2

possibile duplicato di [Servizio favicon.ico in ASP.NET MVC] (http://stackoverflow.com/questions/487230/serving-favicon-ico-in-asp-net-mvc) – codingbadger

risposta

101

Aggiungi questo a voi global.asax:

routes.IgnoreRoute("favicon.ico"); 
+4

Grazie, ha funzionato benissimo . Stavo usando ELMAH e continuava a darmi un errore. Per assicurarti che nessun errore su favicon.ico appaia in ELMAH, assicurati di aggiungere anche il file "favicon.ico" nella cartella principale del tuo sito. – mateuscb

4

Probabilmente si sta ottenendo questo con il server web VS. Destra?

Non si otterrebbe questo con IIS dal momento che IIS (per impostazione predefinita) gestisce le richieste di immagini (.ico, .jpg, .gif, eccetera) e quindi non riescono ad accedere alla propria app.

+0

la mia prima reazione è stata sì, ma no, è anche su iis6 + win2003 – Michel

+1

Anche su IIS 7. È necessario aggiungere l'ignoreroute per favicon e per robots.txt. –

+2

IIS 7 ha questa "" pipeline integrata "] (http://www.iis.net/learn/application-frameworks/building-and-running-aspnet-applications/how-to-take-advantage-of-the- Iis-integrated-pipeline) cosa in cui i gestori HTTP ottengono una crepa praticamente contro qualsiasi URL che colpisce il sito, IIRC. – cHao

19

È inoltre possibile specificare il percorso di ignorare i vincoli

routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 
+0

C'è qualche logica dietro l'utilizzo di un approccio complesso quando il semplice 'routes.IgnoreRoute (" favicon.ico ");' sembra essere abbastanza? Forse qualche browser tenta di ottenere automaticamente la favicon e usa un URL divertente? – ANeves

+2

L'approccio semplice funzionerebbe solo se favicon.ico fosse inserito nella radice del sito come @montiuscb ha evidenziato nel suo commento, tuttavia se lo si colloca altrove come descritto in http://stackoverflow.com/questions/487230/ servendo-favicon-ico-in-asp-net-mvc abbiamo quindi bisogno di questo approccio più complicato. –

+1

Chiunque utilizzi questo snippet di codice dovrebbe tenere presente che esiste un errore di sintassi poiché "route" deve essere in minuscolo poiché si tratta di un'istanza e non di un tipo –

0

interessanti come sembra ho ottenuto questo errore solo se avevo controllato il "Attiva Just My Code" opzione sotto tools->options->debugging, e non appena ho deselezionato non sto ricevendo più questo errore.

Nota tuttavia che sembra che l'errore sia ancora gettato dietro le quinte ma catturato immediatamente internamente, quindi la soluzione migliore è codificare in global.asax per ignorarlo come suggeriscono le altre risposte.

13

Le risposte migliori sono corrette.

routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 

Ma per le versioni più recenti di MVC è necessario aggiungere questo alla parte superiore della metodo di RegisterRoutes in RouteConfig.cs (in modo da qualche parte prima routes.MapRoute (..) si chiama).

Problemi correlati