Bonjour,
Je souhaiterai pouvoir réaliser un module de trace pour toutes mes applications de type service web ; qui viendrai écrire les informations dans une base de donnée.
Ma problématique principale et que je souhaite être en mesure d'accoupler toutes les traces de la reception d'une requête à l'envoie de la réponse.
Pour ce faire, l'idée et de disposer d'un identifiant unique qui ne changerai pas tout au long du processus de l'appel à la méthode web. Je précise également que la solution ne doit pas tenir compte de la technologie du service web (ormis .Net ; le service peut être aussi bien en WCF, qu'en REST, ou qu'en ASMX), ni du mode d'instanciation du contexte.
Ci-dessous, les différents points que je dois solutionner et leur avancement.
1. Pouvoir identifier l'arriver d'une requête
--> 1.a J'ai trouvé qu'en réalisant un EndpointBehavior, je dispose des evenement AfterRequest et BeforeReply ; qui sont l'entrée et la sortie de la méthode
--> 1.b Ou alors ajout d'un global.asax pour beneficier des evenements Begin_qqch
2. Générer un identifiant unique qui sera alors utilisé pour toutes les traces de l'appel en cours.
--> Je pense q'un identifiant unique peu être généré par GUID.NewGUID() ; mais je ne sais pas comment le conserver afin qu'il puisse être accessible dans n'importe quel couche ou méhode de l'appel en cours (le web service pouvant être multi-thread et sans session).
J'ai également pu lire certain sujet en rapport avec OperationContext.Current.SessionID, mais il semblerait que la valorisation dépende du mode d'instanciation du context ; et l'idée et de créer une librairie de traçabilite que je puisse ajouter à tous mes projet.
Voilà, le besoin est simple (tracer et regrouper toutes les log d'un appel à une méthode web).
Mais peut-être ne suis-je pas sur la bonne piste ; et vous auriez une autre approche ou d'autre idée.
Par avance, merci.
Partager