如何为c#中的反射程序集获取异常StackTrace



我有一个简单的c#.net windows服务,它在运行时加载程序集并在其中执行一个方法。如果出现错误,我会向自己发送一封带有堆栈跟踪的电子邮件。问题是堆栈跟踪只给我程序的堆栈,而不给我反映的程序集的堆栈。有办法做到这一点吗。这是代码

try
{
  var filename = "abc.dll";
  var assemblyToLoad = Assembly.LoadFile(filename);
  var args = new object[]
                        {
                         "FirstName","LastName"
                        };
  var classToLoad = assemblyToLoad.CreateInstance("abc.myclass", false,
                BindingFlags.CreateInstance, null, args, null, null);
  var value = classToLoad.GetType().GetMethod("Run").Invoke(classToLoad, null);
}
catch(Exception ex)
{
  SendMail(ex.StackTrace);
}

您似乎正在尝试重新发明轮子,既然您可以实现一个众所周知的强大框架,为什么要采用这种基本的日志记录方式?

我建议你看看Elmah,它是我使用过的最简单的日志记录框架之一。

感谢dartonw。他的建议奏效了。我觉得自己很笨。我只需要将反射程序集的.pdb文件放入bin文件夹中,然后查看innerException的堆栈跟踪,就可以获得反射程序集中的堆栈跟踪。

最新更新