[英]How to get exception StackTrace for reflected assemblies in c#
我有一个简单的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的堆栈跟踪,即可获取反射程序集的堆栈跟踪。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.