Как использовать EventListener в.net core 2.2 (Runtime Events)
MS объявляет о выпуске.NET Core 2.2. Включает диагностические улучшения среды выполнения, с Runtime Events
, Мой вопрос: как использовать EventListener в.NET Core 2.2? Статья плохая.
1 ответ
Я на самом деле получил его работать в примере проекта ASP.Net Core 2.2 API. Это на самом деле довольно легко, но мне также нужно было время.
Я создал диагностический класс, подобный тому, который указан в документации. Я назвал этот класс Diagnostics.cs
, Этот класс содержит код из документации Microsoft. Ни больше ни меньше. Затем я добавил его в качестве единственного сервиса в ConfigureServices().
services.AddSingleton<Diagnostics>();
Наконец я ввел это в ValuesController.
private Diagnostics _diag;
public ValuesController(Diagnostics diag)
{
_diag = diag;
}
При попадании в конечную точку от Почтальона я получил много событий.
ThreadID = 13588 ID = 192 Name = MethodJitInliningFailed
Name = "MethodBeingCompiledNamespace" Value = "Microsoft.IntelliTrace.TelemetryObserver.MvcActionEventArgumentSerializer"
Name = "MethodBeingCompiledName" Value = "SerializeArguments"
Name = "MethodBeingCompiledNameSignature" Value = "class System.String (class System.Collections.Generic.IEnumerable`1<value class System.Collections.Generic.KeyValuePair`2<class System.String,class System.Object>>)"
Name = "InlinerNamespace" Value = "Microsoft.IntelliTrace.TelemetryObserver.MvcActionEventArgumentSerializer"
Name = "InlinerName" Value = "SerializeArguments"
Name = "InlinerNameSignature" Value = "class System.String (class System.Collections.Generic.IEnumerable`1<value class System.Collections.Generic.KeyValuePair`2<class System.String,class System.Object>>)"
Name = "InlineeNamespace" Value = "System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]"
Name = "InlineeName" Value = "get_Current"
Name = "InlineeNameSignature" Value = "instance !0 ()"
Name = "FailAlways" Value = "False"
Name = "FailReason" Value = "target not direct"
Name = "ClrInstanceID" Value = "8"
Это, конечно, только для целей тестирования. Я бы, вероятно, не добавил это как синглтон, но попытался бы сделать его универсальным / типизированным вместо этого и добавить его как ограниченную или временную службу.