2009-10-12 5 views
1

Je voudrais marquer certaines pages de mon site qui est actuellement dans la nature comme "obsolète" et ramasser cela dans mon global.asax et rediriger le client vers une autre page.Programatically demander une page, en asax globale si son marqué obsolète?

Ensuite, je vais demander au site de prévenir l'équipe de développement que quelqu'un a essayé de toucher cette page.

Pouvez-vous accéder aux informations de type pour la page de n'importe quel endroit global?

Répondre

2

A condition que vous avez la page suivante:

[Obsolete] 
public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { } 
} 

En global.asax vous pouvez le faire:

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e) 
{ 
    if (!(this.Context.Handler is System.Web.UI.Page)) 
    { 
     return; 
    } 

    var isPageObsolete = this.Context.Handler 
      .GetType() 
      .BaseType 
      .GetCustomAttributes(typeof(ObsoleteAttribute), true) 
      .Length > 0; 
    if (isPageObsolete) 
    { 
     Response.Redirect("http://www.google.com"); 
    } 
} 
+0

simple, élégant, agréable. Je ne savais pas que le "gestionnaire" était la page. Merci Darin. – DevelopingChris

0

Je pense que la réponse de Darin est assez créatif. Je propose une autre perspective. La méthode discutée jusqu'ici marque la page à la page. Que diriez-vous de marquer la page say dans la config ou un autre fichier xml comme celui-ci.

<obsoletePages> 
    <page path="/page123.aspx /> 
    <page path="/pagexyz.aspx /> 
</obsoletePages> 

A global.asax, intercepter la demande à Application_BeginRequest(), si la page de demande se trouve dans le fichier de configuration, effectuer la redirection.

+0

J'avais exploré cette voie personnellement, comme la solution la plus facile à mettre en œuvre. Le plus dur est, c'est difficile à savoir, quand vous essayez d'obtenir une page à exécuter, pourquoi diable vous êtes redirigé. Faire de la maintenance sur la plus grande confusion de l'obsolète. Ma pensée est également de marquer une date où quelque chose était obsolète et avant chaque sortie d'aller trouver les choses qui ont été obsolètes dans la production de 90 jours ou quoi que ce soit et de les tailler. – DevelopingChris

+0

La gestion de l'état obsolète de certaines pages n'est pas plus fastidieuse que la gestion à partir d'un seul point. Quoi qu'il en soit, vous devriez savoir mieux que vous comprenez la nature de votre application et protocole de développement. Bonne chance! –

Questions connexes