2012-07-04 4 views
2

Je souhaite activer le suivi en mvc et, plus précisément, je souhaite afficher le suivi sur une page si certaines conditions sont remplies.Suivi MVC pour des demandes spécifiques uniquement

Est-il possible d'activer les écritures System.Diagnostics.Trace si je les demande dans le cadre d'une seule requête?

Répondre

3

Malheureusement, le Trace class ne peut pas activer ou désactiver le suivi en fonction des conditions que vous souhaitez résoudre à la demande. C'est une approche tout ou rien.

Cela dit, je très recommandons MVC MiniProfiler (utilisé ici sur les sites Exchange Stack, notamment au public sur le Stack Exchange Data Explorer).

Vous essentiellement obtenir un rendu sur votre page comme ceci:

MiniProfiler screenshot

Et vous pouvez définir le profilage sur une base par demande:

using StackExchange.Profiling; 
...  
protected void Application_BeginRequest() 
{ 
    if (Request.IsLocal) 
    { 
     MiniProfiler.Start(); 
    } 
} 

La syntaxe est légèrement différente de celle en utilisant la classe Trace, en ce que vous devez utiliser using instructions, comme ceci:

using (profiler.Step("Set page title")) 
{ 
    ViewBag.Title = "Home Page"; 
} 

La raison en est que c'est une opération fondamentalement différente; Lorsque vous tracez, vous écrivez une information à un moment donné. Lors du profilage, vous examinez des segments de temps, et l'instruction using permet de définir ces segments.

Il est peut-être un peu exagéré, mais je préfère utiliser volontiers cette plus Trace à cause de l'aspect de profilage, ainsi que la nature non-intrusive des informations affichées (Trace a une mauvaise habitude de faire la page regarder très étrange).

0

J'ai éventuellement eu recours à un enregistreur dans mes classes, puis à l'affichage conditionnel de ces informations dans le contrôleur si nécessaire. En utilisant un conteneur, j'ai lié mon instance de logger à la portée de HttpContext, puis l'ai simplement pompée dans mon modèle de vue.

Questions connexes