Smart 404 en asp.net

Suite à la lecture de cet article :

http://wwww.geekswithblogs.net/shahed/archive/2007/10/23/116278.aspx

L'auteur Shahed Khan (le createur de smartcodegenerator) nous explique comment recuperer le nom de la page qui manque et d'en substituer une autre via le gestionnaire standard d'erreur d'asp.net

Pour traiter cette problèmatique en s'aidant de google je propose une autre alternative via un handler spécifique :

google404.ashx (par exemple)

<%@ WebHandler Language="C#" Class="Google404" %>

using System;
using System.Web;

public class Google404 : IHttpHandler
{
    public void ProcessRequest (HttpContext context)
    {
        string path = context.Request["aspxerrorpath"];
        if (!string.IsNullOrEmpty(path))
        {
            path = path.Replace(".aspx","");
            path = path.Replace("/","");
        }
        string site = HttpUtility.UrlEncode("site:monsite.com");
        string tuning = HttpUtility.UrlEncode("T:white;L:http://monsite.com/images/Logo.png;AWFID:5e296cf425978c37;");
        string r = string.Format("http://www.google.com/custom?hl=fr&q={0}+{1}&cof={2}",site, path, tuning);
        context.Response.Redirect(r,true);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

et la configuration du handler dans web.config

    <customErrors mode="On">
      <error statusCode="404" redirect="~/google404.ashx" />
    </customErrors>

Cette variante de traitement part du principe que google connait mieux votre site que vous ;) , la partie tuning est optionnelle il s'agit juste de customiser la page de resultat de google pour faire apparaitre son propre logo pour ne pas trop perturber l'utilisateur qui ne s'attends probablement pas a ce resultat.

Aucun commentaire: