我有一个简单的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);
}
答案 0 :(得分:0)
您似乎正在尝试重新发明轮子,为什么在您可以实现一个众所周知且强大的框架时有这种基本的日志记录方式?
我建议你看一下Elmah这是我用过的最简单的日志框架之一。
答案 1 :(得分:0)
感谢dartonw。他的建议奏效了。我觉得我好笨。我只需要将反射的程序集的.pdb文件放到bin文件夹中,然后查看innerException的堆栈跟踪以获取反射程序集的堆栈跟踪。