2009-04-05 5 views
1

Je souhaite essayer de synchroniser une méthode d'action ASP.NET MVC.Synchronisation d'une action ASP.NET MVC

Je pensais qu'une bonne façon de le faire serait d'utiliser un en-tête personnalisé. Est-ce que je peux utiliser un ActionFilterAttribute pour cela?

Est-ce que quelqu'un a fait cela, ou est-ce qu'il y a des fonctionnalités ASP.NET pour le faire?

Je suis juste expulsé de Starbucks et j'espère que quelqu'un aura une réponse avant de rentrer à la maison. Habituellement quelqu'un fait :-)

Répondre

0

Je serais d'accord avec Cherian que le traçage serait le meilleur choix car il devrait être le plus précis.

Je pense que si je peux deviner quelle est votre idée avec l'option d'attribut, je dois supposer que vous utiliseriez la réflexion pour démarrer et arrêter dynamiquement les temporisateurs sur les méthodes pendant leur exécution. Ce serait cool, je suppose ... mais ça pourrait ajouter des overheads donnant de fausses lectures.

3

Je serais d'accord avec asp.net tracing serait le plus approprié pour le travail. Mais travailler avec ActionFilter devrait être amusant.

Ce code n'a pas été testé.

public class TimingAttribute : ActionFilterAttribute 
{ 
    Stopwatch stopwatch; 

    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     stopwatch = new Stopwatch(); 
     stopwatch.Start(); 
     base.OnActionExecuting(filterContext); 
    } 

    public override void OnResultExecuted(ResultExecutedContext filterContext) 
    { 
     try 
     { 
      base.OnResultExecuted(filterContext); 
     } 
     finally 
     { 
      stopwatch.Stop(); 
      var ms = stopwatch.ElapsedMilliseconds; 
      // your logging here. controller/action/request info could be extracted from filterContext 
     } 
    } 
} 
+0

thats ce que je pensais trop :-) je serais un peu comme un en-tête « secret » que je peux suivre dans Fiddler plutôt que de jouer avec le traçage et tout ce que l'instrumentation * # & $ –

+0

par le « fun » partie je veux dire –

+0

Espérons que cela n'arrivera pas dans la production. – Cherian

Questions connexes