Accueil > .Net, ASP.Net, MVC2 > [C# 4 MVC2] Global.asax et gestion des 404

[C# 4 MVC2] Global.asax et gestion des 404

Dans le billet précédent, il y avait la gestion de l’action non reconnue.

Mais qu’en est-il du controller non reconnu ?

Si, comme moi, vous utilisez la route par défaut, il est possible de tomber sur des 404 en spécifiant une URL qui n’existe pas : http://localshot/Unknow.

Là, malheureusement, je n’ai pas trouvé de moyen de gérer cela dans mon BaseController.

Du coup, c’est du coté du global.asax que je me suis tourné.

Comme toute erreur au niveau du global.asax, c’est dans Application_Error que je vais mettre mon code.

/// <summary>
/// Méthode permettant de gérer les exceptions non gérées jusque là
/// </summary>
/// <param name="sender">Objet ayant provoqué l'exception</param>
/// <param name="e">Paramètres</param>
protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();

    // Par défaut, Firefox cherche le /favicon.ico, et génère une 404 en son absence
    if (exception.Message != null && exception.Message.Contains("/favicon.ico"))
        return;
    // Publication de l'exception
    Response.Clear();
    Server.ClearError();

    // Gestion des HttpException
    if (exception.GetType() == typeof(HttpException))
    {
        HttpException httpException = exception as HttpException;
        if (httpException != null)
        {
            // Gestion des 404
            if (httpException.GetHttpCode() == 404)
            {
                IController icontroller = new Controllers.HomeController();
                RouteData routeData = new RouteData();
                routeData.Values.Add("controller", "Home");
                routeData.Values.Add("action", "Error404");
                icontroller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
            }
        }
    }
}

Ici, comme on est pas dans le BaseController, on doit se créer un propre controller afin de gérer la redirection de l’utilisateur vers la page d’erreur qui va bien. Comme c’est dans le HomeController que j’ai les actions qui vont bien, c’est une instance de HomeController que je créé.

Catégories :.Net, ASP.Net, MVC2
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :