Come reindirizzare un utente a una pagina 404 personalizzata in ASP.NET MVC invece di generare un'eccezione?


18

Voglio essere in grado di catturare l'eccezione che viene generata quando un utente richiede un controller inesistente e reindirizzarlo a una pagina 404. Come posso fare questo?

Ad esempio, l'utente richiede http://www.nosite.com/paeges/1 (deve essere/pages/). Come faccio a farlo in modo che vengano reindirizzati alla 404 piuttosto che alla schermata delle eccezioni?

6

Dai uno sguardo allo this page per indirizzare i tuoi 404 errori in una pagina specificata.

+2

Si potrebbe voler aggiornare la risposta a includere dettagli rilevanti in esso. 17 mag. 162016-05-17 05:03:44


16

Basta usare un percorso:

// We couldn't find a route to handle the request. Show the 404 page. 
routes.MapRoute("Error", "{*url}", 
    new { controller = "Error", action = "404" } 
); 

Dal momento che questo sarà un gestore globale, mettere tutto il modo in fondo sotto il percorso predefinito.

+6

È giusto? Perché sicuramente se definisco un percorso per {controller}/{action}/{id} diciamo, e l'utente inserisce l'url con un controller che non esiste, verrà visualizzato in giallo a seconda di quale primo percorso corrisponderà e il tuo catturare tutto non sarà mai raggiunto? 22 ott. 082008-10-22 19:48:03

  0

Ho appena provato questo, e ancora ottengo lo schermo giallo predefinito 404. 15 dic. 112011-12-15 21:03:17

+1

Questo funziona, ma significa che devi avere percorsi manuali per tutti i tuoi controller, cioè non '{controller}/{action}/{id } invece dovresti fare 'Home/{azione}/{id}', 'Conto/{azione}/{id} ', ecc. 22 gen. 132013-01-22 23:01:38

  0

@SerjSagan, al giorno d'oggi, puoi usare i vincoli di percorso, come:' percorsi .MapRoute ( nome: "Home", url: "{action}", valori predefiniti: nuovo {controller = "Casa", azione = "Indice"}, vincoli: nuovo {action = "Indice | Aiuto | Ordini "} );' 08 mar. 162016-03-08 12:43:01


1

trovato questo sullo stesso sito - Strategies for Resource based 404s

+1

Le risposte di solo collegamento sono sconsigliate su SO. 21 ott. 162016-10-21 22:27:38