Как использовать EventListener в .net core 2.2 (Runtime Events) - PullRequest
0 голосов
/ 06 декабря 2018

MS объявляет о выпуске .NET Core 2.2.Он включает в себя диагностические улучшения среды выполнения, с Runtime Events. Мой вопрос: как использовать EventListener в .NET Core 2.2?Статья плохая.

1 Ответ

0 голосов
/ 06 декабря 2018

Я действительно запустил его в пример API-проекта ASP.Net Core 2.2.Это на самом деле довольно легко, но мне также нужно было время.

Я создал диагностический класс, подобный тому, который упомянут в документации.Я назвал этот класс 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"

Это, конечно, только для целей тестирования.Я бы, вероятно, не добавил это как синглтон, но попытался бы сделать его универсальным / типизированным вместо этого и добавить его как ограниченную или временную службу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...