J'ai une action qui prend dans une chaîne qui est utilisée pour récupérer des données. Si cette chaîne ne renvoie aucune donnée (peut-être parce qu'elle a été supprimée), je souhaite renvoyer un 404 et afficher une page d'erreur.
Actuellement, j'utilise simplement une vue spéciale qui affiche un message d'erreur convivial spécifique à cette action indiquant que l'élément n'a pas été trouvé. Cela fonctionne bien, mais dans l'idéal, vous souhaitez renvoyer un code d'état 404 afin que les moteurs de recherche sachent que ce contenu n'existe plus et puissent le supprimer des résultats de recherche.
Quelle est la meilleure manière de s'occuper de ça?
Est-ce aussi simple que de définir Response.StatusCode = 404?
asp.net-mvc
error-handling
http-status-code-404
Paul Hiles
la source
la source
Réponses:
Il y a plusieurs façons de le faire,
throw new HttpException(404, "Some description");
la source
Dans ASP.NET MVC 3 et versions ultérieures, vous pouvez renvoyer un HttpNotFoundResult à partir du contrôleur.
la source
return new HttpNotFoundResult("optional description");
HttpNotFound()
. Vous pouvez donc revenir à lareturn HttpNotFound("optional description")
place.Dans MVC 4 et supérieur, vous pouvez utiliser les
HttpNotFound
méthodes d'aide intégrées :ou
la source
Code:
Web.config
la source
J'ai utilisé ceci:
la source
Si vous travaillez avec .NET Core, vous pouvez
return NotFound()
la source
Dans NerdDinner par exemple. Essayez- le
la source
Aucun des exemples ci-dessus n'a fonctionné pour moi jusqu'à ce que j'aie ajouté la ligne médiane ci-dessous:
la source
return HttpNotFound();
n'a pas fonctionné pour vous? Quel âge a votre système?return HttpNotFound();
? Cela fonctionne très bien avec MVC 4 à la hausse. msdn.microsoft.com/en-us/library/… "La propriété TrySkipIisCustomErrors est utilisée uniquement lorsque votre application est hébergée dans IIS 7.0. Lors de l'exécution en mode classique dans IIS 7.0, la valeur par défaut de la propriété TrySkipIisCustomErrors est true. Lors de l'exécution en mode intégré , la valeur par défaut de la propriété TrySkipIisCustomErrors est false. "J'utilise:
Cela fonctionne pour moi :-)
la source
Dans .NET Core 1.1:
la source
Vous pouvez également faire:
la source
Veuillez essayer le code de démonstration suivant:
la source