Si vous inspectez la réponse à l'aide de fiddler, je crois que vous constaterez que la page blanche renvoie en fait un code d'état 404. Le problème est qu'aucune vue n'est rendue et donc la page blanche. Vous pouvez obtenir une vue réelle à afficher à la place en ajoutant un élément customErrors à votre web.config qui redirigera l'utilisateur vers une URL spécifique lorsqu'un certain code d'état se produit que vous pourrez ensuite gérer comme vous le feriez avec n'importe quelle URL. . Voici un aperçu ci-dessous:
D'abord, lancez le HttpException, le cas échéant. Lors de l'instanciation de l'exception, veillez à utiliser l'une des surcharges qui prend un code d'état http comme paramètre comme ci-dessous.
throw new HttpException(404, "NotFound");
Ensuite, ajoutez un gestionnaire d'erreur personnalisé dans votre fichier web.config afin que vous puissiez déterminer ce point de vue doit être rendue lorsque l'exception ci-dessus se produit. Voici un exemple ci-dessous:
<configuration>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="~/404"/>
</customErrors>
</system.web>
</configuration>
Maintenant, ajoutez une entrée d'itinéraire dans votre Global.asax qui va gérer l'url « 404 », qui transmet la demande à l'action d'un contrôleur qui va afficher la vue de votre page 404 .
Global.asax
routes.MapRoute(
"404",
"404",
new { controller = "Commons", action = "HttpStatus404" }
);
CommonsController
public ActionResult HttpStatus404()
{
return View();
}
Tout ce qui reste est d'ajouter une vue de l'action ci-dessus.
Une mise en garde avec la méthode ci-dessus: selon le livre « ASP.NET Pro 4 en C# 2010 » (Apress) l'utilisation de customErrors est obsolète si vous utilisez IIS 7. Au lieu de cela, vous devez utiliser la section httpErrors. Voici une citation du livre:
But although this setting still works with Visual Studio’s built-in test web server, it’s effectively been replaced by the <httpErrors>
section in IIS 7.x.
est-ce pas sujet à la crainte de bug « 404 trop court » dans IE? –