【发布时间】:2021-12-04 21:50:46
【问题描述】:
我试图在我的异常过滤器中获取源自异常的方法名称和类名称,但无法这样做。我认为是因为使用了异步方法。我将 MoveNext 作为方法而不是实际的方法名称。
请在下面找到代码
public class ExceptionFilter : ExceptionFilterAttribute
{
/// <summary>
/// Exception filter
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public override Task OnExceptionAsync(HttpActionExecutedContext context, CancellationToken cancellationToken)
{
var s = new StackTrace(context.Exception);
var methodname=s.GetFrame(0).GetMethod().Name;
Logger.LogError(context.Exception, context.Exception.Message);
context.Response = context.Request.CreateResponse(HttpStatusCode.OK, res);
return Task.CompletedTask;
}
}
我搜索了很多,但找不到任何答案。 任何帮助都将不胜感激。
【问题讨论】:
-
你可以试试
new StackTrace(context.Exception).GetFrame(0).GetMethod().Name -
嗨@viveknuna 这是给MoveNext
-
GetFrame(0)也不起作用? -
这个
var name = Assembly.GetExecutingAssembly(); var methodname = s.GetFrames().Select(f => f.GetMethod()).First(m => m.Module.Assembly == name).Name;怎么样 -
@viveknuna 实际上我尝试了 GetFrame(0) 但在尝试不同的事情时错误地输入了问题
标签: c# .net exception asp.net-web-api