Sdílet prostřednictvím


Analytické trasování WCF

Ukázka WCFAnalyticTracingExtensibility ukazuje, jak přidat vlastní trasovací události do datového proudu analytických tras, které Windows Communication Foundation (WCF) zapisuje do Trasování událostí pro Windows v rozhraní .NET Framework. Analytické trasování je určené k tomu, aby bylo snadné získat přehled o vašich službách bez placení vysoké pokuty za výkon. Tato ukázka ukazuje, jak pomocí System.Diagnostics.Eventing rozhraní API zapisovat události, které se integrují se službami WCF.

Další informace o System.Diagnostics.Eventing rozhraních API najdete v tématu System.Diagnostics.Eventing.

Další informace o trasování událostí ve Windows najdete v tématu Vylepšení ladění a ladění výkonu pomocí Trasování událostí pro Windows.

Disposing EventProvider

Tato ukázka používá System.Diagnostics.Eventing.EventProvider třídu, která implementuje System.IDisposable. Při implementaci trasování pro službu WCF je pravděpodobné, že prostředky 's prostředky EventProviderpo dobu životnosti služby. Z tohoto důvodu a pro čitelnost tato ukázka nikdy nezlikviduje zabalený EventProvider. Pokud má vaše služba z nějakého důvodu jiné požadavky na trasování a musíte tento prostředek odstranit, měli byste tuto ukázku upravit v souladu s osvědčenými postupy pro likvidaci nespravovaných prostředků. Další informace o uvolnění nespravovaných prostředků naleznete v tématu Implementace metody Dispose.

Self-Hosting vs. Web Hosting

U služeb hostovaných na webu poskytují analytické trasování WCF pole s názvem HostReference, které slouží k identifikaci služby, která generuje trasování. Rozšiřitelné trasování uživatelů se může zúčastnit tohoto modelu a tato ukázka ukazuje osvědčené postupy pro tento postup. Formát odkazu na webového hostitele, když se znak |ve výsledném řetězci skutečně zobrazí, může být některý z následujících:

  • Pokud aplikace není v kořenovém adresáři.

    <SiteName><ApplicationVirtualPath>|<ServiceVirtualPath>|<Název_služby>

  • Pokud je aplikace v kořenovém adresáři.

    <Název> webu|<ServiceVirtualPath>|<Název_služby>

U služeb v místním prostředí nenaplní analytické trasování WCF pole HostReference. Třída WCFUserEventProvider v této ukázce se chová konzistentně, když ji používá služba v místním prostředí.

Vlastní podrobnosti události

Manifest zprostředkovatele událostí etW WCF definuje tři události, které jsou navrženy tak, aby je autoři služby WCF v kódu služby vygenerovala. Následující tabulka obsahuje rozpis tří událostí.

Událost Popis ID události
UserDefinedInformationEventOccurred Tuto událost vygenerujte, když se ve vaší službě stane něco, co není problém. Můžete například vygenerovat událost po úspěšném volání databáze. 301
UserDefinedWarningOccurred Tuto událost vygenerujte, když dojde k problému, který může v budoucnu způsobit selhání. Například můžete vygenerovat událost upozornění, když volání databáze selže, ale podařilo se vám obnovit vrácením zpět do redundantního úložiště dat. 302
UserDefinedErrorOccurred Tuto událost vygenerujte, když se vaše služba nebude chovat podle očekávání. Například můžete vygenerovat událost, pokud volání databáze selže a nemůžete načíst data z jiného prostředí. 303

Použití této ukázky

  1. V sadě Visual Studio otevřete soubor řešení WCFAnalyticTracingExtensibility.sln.

  2. Řešení sestavíte stisknutím kláves Ctrl+Shift+B.

  3. Řešení spustíte stisknutím kláves Ctrl+F5.

    Ve webovém prohlížeči klikněte na Calculator.svc. Identifikátor URI dokumentu WSDL pro službu by se měl zobrazit v prohlížeči. Zkopírujte tento identifikátor URI.

  4. Spusťte testovacího klienta WCF (WcfTestClient.exe).

    Testovací klient WCF (WcfTestClient.exe) se nachází na \<Visual Studio Install Dir>\Common7\IDE\WcfTestClient.exeadrese .

  5. V rámci testovacího klienta WCF přidejte službu tak, že vyberete Soubor a pak přidáte službu.

    Do vstupního pole přidejte adresu koncového bodu.

  6. Kliknutím na tlačítko OK zavřete dialogové okno.

    Služba ICalculator se přidá do levého podokna v části Moje projekty služeb.

  7. Otevřete aplikaci Prohlížeč událostí.

    Před vyvoláním služby spusťte Prohlížeč událostí a ujistěte se, že protokol událostí naslouchá sledování událostí vygenerovaných ze služby WCF.

  8. V nabídce Start vyberte Správa istrativní nástroje a pak Prohlížeč událostí. Povolte protokoly analýzy a ladění.

  9. Ve stromovém zobrazení v Prohlížeč událostí přejděte na Prohlížeč událostí, protokoly aplikací a služeb, Microsoft, Windows a potom aplikační serverové aplikace. Klikněte pravým tlačítkem myši na Aplikace aplikačního serveru, vyberte Zobrazit a potom Zobrazit analytické a ladicí protokoly.

    Ujistěte se, že je zaškrtnutá možnost Zobrazit analytické protokoly a protokoly ladění. Povolte analytický protokol.

    Ve stromovém zobrazení v Prohlížeč událostí přejděte na Prohlížeč událostí, protokoly aplikací a služeb, Microsoft, Windows, application server-applications a pak Analytic. Klikněte pravým tlačítkem myši na Analýzu a vyberte Povolit protokol.

  10. Otestujte službu pomocí testovacího klienta WCF.

    1. V testovacím klientovi WCF poklikejte na Add() pod uzlem služby ICalculator.

      Metoda Add() se zobrazí v pravém podokně se dvěma parametry.

    2. Jako první parametr zadejte 2 a druhý parametr zadejte 3.

    3. Kliknutím na Vyvolat vyvoláte metodu.

  11. Přejděte do okna Prohlížeč událostí, které jste už otevřeli. Přejděte na Prohlížeč událostí, protokoly aplikací a služeb, Microsoft, Windows, aplikační serverové aplikace.

  12. Klikněte pravým tlačítkem myši na analytický uzel a vyberte Aktualizovat.

    Události se zobrazí v pravém podokně.

  13. Vyhledejte událost s ID 303 a poklikáním ji otevřete a zkontrolujte její obsah.

    Tuto událost vygenerovala Add() metoda služby ICalculator a má datovou část rovnou 2+3=5.

Vyčištění (volitelné)

  1. Otevřete Prohlížeč událostí.

  2. Přejděte na Prohlížeč událostí, protokoly aplikací a služeb, Microsoft, Windows a potom application-server-Applications. Klikněte pravým tlačítkem myši na Analýzu a vyberte Zakázat protokol.

  3. Přejděte na Prohlížeč událostí, protokoly aplikací a služeb, Microsoft, Windows, Application-Server-Applications a pak Analytic. Klikněte pravým tlačítkem na Analýzu a vyberte Vymazat protokol.

  4. Kliknutím na Tlačítko Vymazat události vymažete.

Známý problém

V Prohlížeč událostí došlo ke známému problému, kdy může selhat dekódování událostí Trasování událostí pro Windows. Může se zobrazit chybová zpráva: "Popis ID <> události ze zdroje Microsoft-Windows-Application Server-Applications-Applications nelze najít. Součást, která vyvolá tuto událost, není nainstalována v místním počítači nebo je poškozena instalace. Komponentu můžete nainstalovat nebo opravit na místním počítači." Pokud k této chybě dojde, vyberte v nabídce Akce možnost Aktualizovat. Událost by pak měla správně dekódovat.

Viz také