1

J'ai créé un EventSource personnalisé en utilisant Visual Studio 2015 et le paquet nuget Microsoft Event Source Library (dernière version 1.1.28).Pourquoi mon EventSource personnalisé fonctionne-t-il sous Windows 8.1 et est-il fautif sur Windows Server 2012 R2?

J'ai installé le manifeste en utilisant wevtutil.exe sur mon poste de travail Windows 8.1 et sur un serveur Windows Server 2012 R2.

En général, cette EventSource fonctionne sur les deux machines, elle récupère les événements qui sont visibles dans l'Observateur d'événements. Juste sur Windows Server 2012 R2, la sortie semble un peu merdique dans l'Observateur d'événements. Lorsque je l'installe sur mon poste de travail de dev il fonctionne très bien. Voici un exemple pour mon échantillon événement UnhandledException:

enter image description here

Lorsque je l'installer sur Windows Server 2012 R2 l'Observateur d'événements est complètement foiré comme vous pouvez le voir dans cette capture d'écran:

enter image description here

Est-ce que quelqu'un sait pourquoi cela se produit? Comment puis-je le réparer?

Edit:

Je suis en mesure de le reproduire avec le Microsoft EventSource Library Samples en suivant ces étapes:

  1. Créer un nouveau projet d'application console dans Visual Studio et nommez-le "DemoEventSource"
  2. Installez Microsoft EventSource Library Samples à partir de nuget
  3. Exécutez EventLogEventSourceDemo. Vous pouvez commenter tous les autres exemples dans "EventSourceSamples \ 00_AllSamples.cs" car ils ne sont pas pertinents pour ce problème.
  4. Appuyez sur F5 pour l'exécuter, et suivez les instructions, Event Viewer s'ouvrira automatiquement. Dans l'étape suivante, j'ai créé une machine virtuelle sur Azure avec Windows Server 12 (un problème est survenu sur Windows Server 2012 R2 et Windows Server 2012) et y ai déployé l'application de test. Le résultat est foiré comme décrit dans mon exemple ci-dessus: enter image description here
+0

Philipp, Commençons par les choses simples. EventViewer ne prend pas en charge (au moins dans les versions antérieures de Windows) les manifestes en ligne créés par EventSource. Au lieu de cela, il utilise un manifeste spécifique que vous devez installer sur la machine sur laquelle EventViewer est en cours d'exécution. Avez-vous fait ce pas? Oui ou maintenant divise le reste de la conversation. Merci de m'avoir rattrapé sur Twitter. Je ne passe pas beaucoup de temps ici, mais j'ai marqué ce fil. Kathleen –

+0

Salut Kathleen.J'ai mis à jour les détails de la question. J'ai installé le manifeste dans les deux scénarios, sur Windows 8.1 et sur une machine Windows Server 2012 R2. Juste sur un serveur Windows, il semble vraiment étrange. J'ai essayé plusieurs instances de Windows Server. Toujours le même résultat. –

Répondre

0

Sans tests substantiels, je ne peux pas dire avec une certitude de 100%, mais cela ressemble à un bug. EventSource fait des choses inhabituelles (mais légales) avec des mots-clés. Par exemple, le manifeste indique "l'ID d'événement 72 utilise le mot-clé 0x12", mais lorsque vous regardez réellement dans le fichier ETL, l'événement utilise réellement le mot-clé 0xf000012 (ou quelque chose comme ça). Ce comportement est légal mais rare. Dans certaines versions de tdh.dll, cela a provoqué un décodage incorrect de l'événement. Le journal des événements utilise tdh.dll pour décoder les événements. Windows XP, Windows 8.1 a obtenu une solution pour ce bogue, mais je ne pense pas que le correctif l'a fait pour les versions antérieures.

+0

quel problème? 8.1 et 2012 R2 sont la même version donc le correctif peut être appliqué aux deux – magicandre1981

+0

est-ce cette correction? https://support.microsoft.com/en-us/kb/3080149 qui corrige cela: ** Corrige un problème occasionnel de décodage d'événement dans la fonction TDH (Trace Data Helper) TdhGetEventInformation qui a provoqué la création d'événements de suivi d'événements pour Windows (ETW) en utilisant le .NET Framework 4.6 ** – magicandre1981

+0

Je pense que KB3080149 corrige quelque chose d'autre. Ce correctif était déjà installé sur ma machine virtuelle Azure lorsque j'ai commencé à tester mon EventSource. –