En essayant de faire en sorte que mon application produise correctement des erreurs 404, j'ai mis en place une route catch-all à la fin de ma table de routes, comme indiqué ci-dessous:
routes.MapRoute(
"NotFound", _
"{*url}", _
New With {.controller = "Error", .action = "PageNotFound"} _
)
Cependant, pour que cela fonctionne, j'ai dû supprimer la route par défaut:
{controller}/action/{id}
Mais maintenant que la route par défaut a été supprimée, la plupart de mes liens d'action ne fonctionnent plus, et la seule façon que j'ai trouvée pour les faire fonctionner à nouveau est d'ajouter des routes individuelles pour chaque contrôleur/action.
Existe-t-il un moyen plus simple de faire cela, plutôt que d'ajouter une route pour chaque contrôleur/action?
Est-il possible de créer une route par défaut qui permet toujours à la route catch-all de fonctionner si l'utilisateur essaie de naviguer vers une route inconnue?
1 votes
Pourquoi pensez-vous que le 404 ne fonctionnait pas correctement?
0 votes
@quakkels, J'ai eu la même plainte que @Sean. ASP.NET lance une erreur 404 puis effectue une redirection 302, donc le résultat n'est pas un vrai 404 sur la page en question. Cela se produit lors de l'utilisation de
customErrors
.0 votes
@Dustin Oui, c'est le même problème que j'ai trouvé. Je ne pense pas que ce soit SEO friendly
0 votes
Dans MVC, l'url ne correspond pas toujours à un fichier. Par exemple: domain.com/path/to/destination n'est pas une structure de fichier. Par conséquent, une erreur 404 ne devrait pas être renvoyée car elle ne cherche pas un fichier.
2 votes
IMO, si je vais à
domain.com/nopage
où nopage n'est pas un contrôleur valide, il devrait y avoir une erreur 404.4 votes
Totalement d'accord, 404 = Non trouvé, que ce soit un fichier physique ou non
0 votes
404 est une erreur de fichier non trouvé
2 votes
HTTP 404 - "La ressource demandée n'a pas pu être trouvée." HTTP / REST concerne toutes les ressources, et pose la question, qu'est-ce qu'un 'fichier'?