将事件监听器附加到Microsoft.IdentityModel.Logging

时间:2019-09-23 18:43:00

标签: asp.net event-listener identitymodel

这是一个使用框架4.7的asp.net应用程序。

我试图在asp.net应用程序中附加到Microsoft.IdentityModel.Logging.IdentityModelEventSource.Logger(我在OWIN启动类中使用OpenIdConnect,但遇到了问题,希望附加到此记录器可能会给我一些线索。

在OWIN Startup类的Configuration()方法中,我具有以下内容:

     Microsoft.IdentityModel.Logging.IdentityModelEventSource.Logger.LogLevel = System.Diagnostics.Tracing.EventLevel.Verbose;
            Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;
            var listener = new EventListener();
            listener.EnableEvents(Microsoft.IdentityModel.Logging.IdentityModelEventSource.Logger, EventLevel.LogAlways);
            listener.EventWritten += Listener_EventWritten;
            Microsoft.IdentityModel.Logging.IdentityModelEventSource.Logger.WriteVerbose("A test message.");

在我的Listener_EventWritten方法中,我具有以下内容:

private void Listener_EventWritten(object sender, EventWrittenEventArgs e)
    {
        Debug.WriteLine(e.EventName + "," + e.Message);
    }

此方法会触发很多次,但“ e.Message”始终为null。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

邮件位于有效载荷中。

因此,尝试将您的代码更改为:

private void Listener_EventWritten(object sender, EventWrittenEventArgs e)
{
    foreach (object payload in e.Payload)
    {
        Debug.WriteLine($"[{e.EventName}] {e.Message} | {payload}");
    }
}

对我来说正确。