C# 从DLL获取函数名
我想获取asp.net中从dll抛出的异常的函数名。您应该能够使用堆栈跟踪 表示堆栈跟踪,它是 一个或多个的有序集合 堆叠框架 此时将创建并推送堆栈框架 每个函数调用的调用堆栈 在线程执行期间生成的。 堆栈帧始终包括 MethodBase信息,以及可选的 包括文件名、行号和 列号信息 StackFrame信息将是最有用的 调试生成的信息 配置。默认情况下,调试 生成包括调试符号,而 发布版本不会。调试 符号包含文件的大部分内容, 方法名称、行号和列 信息在建筑中的应用 堆栈帧对象 您可以从异常创建一个类并分析框架 例如:C# 从DLL获取函数名,c#,asp.net,exception,function,C#,Asp.net,Exception,Function,我想获取asp.net中从dll抛出的异常的函数名。您应该能够使用堆栈跟踪 表示堆栈跟踪,它是 一个或多个的有序集合 堆叠框架 此时将创建并推送堆栈框架 每个函数调用的调用堆栈 在线程执行期间生成的。 堆栈帧始终包括 MethodBase信息,以及可选的 包括文件名、行号和 列号信息 StackFrame信息将是最有用的 调试生成的信息 配置。默认情况下,调试 生成包括调试符号,而 发布版本不会。调试 符号包含文件的大部分内容, 方法名称、行号和列 信息在建筑中的应用 堆栈帧对象 您可以从
public void Throw()
{
throw new MyException();
}
public void CallThrow()
{
Throw();
}
[Test]
public void GetThrowingMethodName()
{
try
{
CallThrow();
Assert.Fail("Should have thrown");
}
catch (MyException e)
{
MethodBase deepestMethod = new StackTrace(e).GetFrame(0).GetMethod();
string deepestMethodName = deepestMethod.Name;
Assert.That(deepestMethodName, Is.EqualTo("Throw"));
}
}
您可以在system.diagnostic命名空间的帮助下尝试stacktrace对象这里是您可以尝试的linqpad测试源代码
void Main()
{
try {
test();
}
catch(Exception ex) {
StackTrace st = new StackTrace();
st.GetFrame(1).GetMethod().Name.Dump();
}
}
// Define other methods and classes here
public void test()
{
throw new NotImplementedException();
}
Checkout Method您的意思是要获取引发异常的方法的名称吗?是的,我需要dll中引发异常的方法的名称。如果无法获取方法的名称,请告诉我如何从引发异常的dll中获取方法的名称。@ram,您得到的结果是什么?你能发布一个你的代码和对引发异常的外部程序集的调用的示例吗?这里是我的示例代码:void test(){/*exception comed Here*/}公共类方法{void load(){test();}}这里类名'method'是一个dll文件,我从方法'test()'获得异常。但是堆栈跟踪将方法的名称返回为“load()”。我需要获取方法名“test()”。