comment puis-je lever une exception/résultat 404 ou FileNotFound de mon action et laisser IIS utiliser ma section de configuration customErrors pour afficher la page 404?
J'ai défini mes erreurs personnalisées comme ça
<customErrors mode="On" defaultRedirect="/trouble">
<error statusCode="404" redirect="/notfound" />
</customErrors>
Ma première tentative d'un actionResult qui essaie d'ajouter cela ne fonctionne pas.
public class NotFoundResult : ActionResult {
public NotFoundResult() {
}
public override void ExecuteResult(ControllerContext context) {
context.HttpContext.Response.TrySkipIisCustomErrors = false;
context.HttpContext.Response.StatusCode = 404;
}
}
Mais cela montre juste une page vierge et non ma page/non trouvée
:(
Que devrais-je faire?
ASP.NET MVC 3 a introduit le résultat de l'action HttpNotFoundResult qui doit être utilisé de préférence pour lever manuellement l'exception avec le code d'état http. Cela peut également être retourné via la méthode Controller.HttpNotFound sur le contrôleur:
public ActionResult MyControllerAction()
{
...
if (someNotFoundCondition)
{
return HttpNotFound();
}
}
Avant MVC 3, vous deviez effectuer les opérations suivantes:
throw new HttpException(404, "HTTP/1.1 404 Not Found");
Vous pouvez appeler Controller.HttpNotFound
http://msdn.Microsoft.com/en-us/library/system.web.mvc.controller.httpnotfound (v = vs.98) .aspx
if (model == null)
{
return HttpNotFound();
}
Cela pourrait également aider;
ASP.NET MVC: levée manuelle des exceptions 404 du contrôleur lorsque le modèle est nul