以下代码在azure sdk 2.3中没有任何问题 - WebRole.cs: Trace.Listeners.Add(new DiagnosticMonitorTraceListener());
此外,web.config文件中记录以下内容:
但是,自从我将azure sdk升级到2.5后,WebRole.cs代码(如上所述)开始抛出错误。
我发现由于以下原因,这种情况正在发生 - 在Azure SDK 2.3中:DiagnosticMonitorTraceListener继承自TraceListener 在Azure SDK 2.5中:DiagnosticMonitorTraceListener继承自Microsoft.Cis.Eventing.Listeners.RDEventMonitoringAgentListener
有人可以为此问题提出解决方案吗
答案 0 :(得分:2)
您可以创建自己的包装类,该类继承自抽象类TraceListener。 e.g:
public class MyTraceListener : TraceListener
{
private readonly DiagnosticMonitorTraceListener _traceListener= new DiagnosticMonitorTraceListener();
public override void Write(string message)
{
_traceListener.Write(message);
}
public override void WriteLine(string message)
{
_traceListener.WriteLine(message);
}
}
然后,您可以以传统方式添加此侦听器:
System.Diagnostics.Trace.Listeners.Add(new MyTracelistener());
更新:我发现此问题的真正原因并非DiagnosticMonitorTraceListener从其他类继承,但您可能缺少对 MonAgentListener 的引用。您应该能够通过项目的“添加引用”对话框添加对此DLL的引用。在我添加了Assembly之后,我可以将DiagnosticMonitorTraceListener添加为没有包装器的TraceListener对象,即
System.Diagnostics.Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener());