WCF-analysspårning
Exemplet WCFAnalyticTracingExtensibility visar hur du lägger till dina egna spårningshändelser i strömmen av analysspårningar som Windows Communication Foundation (WCF) skriver till ETW i .NET Framework. Analysspår är avsedda att göra det enkelt att få insyn i dina tjänster utan att betala en hög prestandaavgift. Det här exemplet visar hur du använder API:erna System.Diagnostics.Eventing för att skriva händelser som integreras med WCF-tjänster.
Mer information om API:erna finns i System.Diagnostics.EventingSystem.Diagnostics.Eventing.
Mer information om händelsespårning i Windows finns i Förbättra felsökning och prestandajustering med ETW.
Disponera EventProvider
Det här exemplet använder System.Diagnostics.Eventing.EventProvider klassen, som implementerar System.IDisposable. När du implementerar spårning för en WCF-tjänst är det troligt att du kan använda EventProviderresurserna för tjänstens livslängd. Av den anledningen, och för läsbarhet, bortskaffar det här exemplet aldrig den omslutna EventProvider. Om tjänsten av någon anledning har olika krav för spårning och du måste ta bort den här resursen bör du ändra det här exemplet i enlighet med bästa praxis för att ta bort ohanterade resurser. Mer information om hur du bortser från ohanterade resurser finns i Implementera en avyttringsmetod.
Självbetjäning jämfört med webbvärd
För webbaserade tjänster tillhandahåller WCF:s analysspårningar ett fält med namnet "HostReference", som används för att identifiera tjänsten som genererar spårningarna. Utökningsbara användarspårningar kan delta i den här modellen och det här exemplet visar metodtips för detta. Formatet för en webbvärdreferens när tecknet |faktiskt visas i den resulterande strängen kan vara något av följande:
Om programmet inte finns i roten.
<SiteName><ApplicationVirtualPath>|<ServiceVirtualPath>|<Tjänstnamn>
Om programmet finns i roten.
<SiteName>|<ServiceVirtualPath>|<Tjänstnamn>
För lokalt installerade tjänster fyller inte WCF:s analysspårningar fältet "HostReference". Klassen WCFUserEventProvider
i det här exemplet fungerar konsekvent när den används av en lokalt installerad tjänst.
Anpassad händelseinformation
WCF:s ETW-händelseprovidermanifest definierar tre händelser som är utformade för att genereras av WCF-tjänstförfattare inifrån tjänstkoden. I följande tabell visas en uppdelning av de tre händelserna.
Händelse | beskrivning | Händelse-ID |
---|---|---|
UserDefinedInformationEventOccurred | Generera den här händelsen när något av anteckningen inträffar i din tjänst som inte är ett problem. Du kan till exempel generera en händelse när du har gjort ett anrop till en databas. | 301 |
UserDefinedWarningOccurred | Generera den här händelsen när ett problem inträffar som kan leda till ett fel i framtiden. Du kan till exempel generera en varningshändelse när ett anrop till en databas misslyckas, men du kunde återställa genom att återgå till ett redundant datalager. | 302 |
UserDefinedErrorOccurred | Generera den här händelsen när tjänsten inte fungerar som förväntat. Du kan till exempel generera en händelse om ett anrop till en databas misslyckas och du inte kunde hämta data från någon annanstans. | 303 |
Så här använder du det här exemplet
Öppna WCFAnalyticTracingExtensibility.sln lösningsfilen med Visual Studio.
Tryck på Ctrl+Skift+B för att skapa lösningen.
Om du vill köra lösningen trycker du på Ctrl+F5.
I webbläsaren klickar du på Calculator.svc. URI:n för WSDL-dokumentet för tjänsten bör visas i webbläsaren. Kopiera URI:n.
Kör WCF-testklienten (WcfTestClient.exe).
WCF-testklienten (WcfTestClient.exe) finns på
\<Visual Studio Install Dir>\Common7\IDE\WcfTestClient.exe
.I WCF-testklienten lägger du till tjänsten genom att välja Arkiv och sedan Lägg till tjänst.
Lägg till slutpunktsadressen i indatarutan.
Stäng dialogrutan genom att klicka på OK .
ICalculator-tjänsten läggs till i den vänstra rutan under Mina tjänstprojekt.
Öppna Loggboken-programmet.
Innan du anropar tjänsten startar du Loggboken och ser till att händelseloggen lyssnar efter spårningshändelser som genereras från WCF-tjänsten.
På Start-menyn väljer du Administrationsverktyg och sedan Loggboken. Aktivera analys- och felsökningsloggarna.
I trädvyn i Loggboken navigerar du till Loggboken, Program- och tjänstloggar, Microsoft, Windows och sedan Programserverprogram. Högerklicka på Programserverprogram, välj Visa och sedan Visa analys- och felsökningsloggar.
Kontrollera att alternativet Visa analys- och felsökningsloggar är markerat. Aktivera analysloggen.
I trädvyn i Loggboken navigerar du till Loggboken, Program- och tjänstloggar, Microsoft, Windows, Programserverprogram och sedan Analys. Högerklicka på Analys och välj Aktivera logg.
Testa tjänsten med hjälp av WCF-testklienten.
Dubbelklicka på Lägg till() under ICalculator-tjänstnoden i WCF-testklienten.
Metoden Add() visas i den högra rutan med två parametrar.
Skriv in 2 för den första parametern och 3 för den andra parametern.
Klicka på Anropa för att anropa metoden.
Gå till det Loggboken fönster som du redan har öppnat. Gå till Loggboken, Program- och tjänstloggar, Microsoft, Windows, Programserverprogram.
Högerklicka på analysnoden och välj Uppdatera.
Händelserna visas i den högra rutan.
Leta upp händelsen med ID:t 303 och dubbelklicka på den för att öppna den och inspektera dess innehåll.
Den här händelsen har genererats av
Add()
metoden för ICalculator-tjänsten och har en nyttolast som är lika med "2+3=5".
Rensa (valfritt)
Öppna Loggboken.
Gå till Loggboken, Program- och tjänstloggar, Microsoft, Windows och sedan Application-Server-Applications. Högerklicka på Analys och välj Inaktivera logg.
Gå till Loggboken, Program- och tjänstloggar, Microsoft, Windows, Application-Server-Applications och sedan Analys. Högerklicka på Analys och välj Rensa logg.
Klicka på Rensa för att rensa händelserna.
Känt problem
Det finns ett känt problem i Loggboken där det kan misslyckas med att avkoda ETW-händelser. Du kan se ett felmeddelande som säger: "Beskrivningen för händelse-ID-ID <> från källan Microsoft-Windows-Application Server-Applications kan inte hittas. Antingen är komponenten som genererar den här händelsen inte installerad på den lokala datorn eller så är installationen skadad. Du kan installera eller reparera komponenten på den lokala datorn." Om det här felet uppstår väljer du Uppdatera på åtgärdsmenyn. Händelsen bör sedan avkodas korrekt.