相关疑难解决方法(0)

MoveNext而不是实际的方法/任务名称

使用log4net声明为:

private readonly ILog log = 
       LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType());
Run Code Online (Sandbox Code Playgroud)

在异步方法或任务中,如下所示:

public async void CheckSomething()
{
    log.Info(null);
    //....
}
Run Code Online (Sandbox Code Playgroud)

日志MoveNext而不是CheckSomething.知道如何让它记录一个实际的方法名称?

c# log4net methodbase async-await

19
推荐指数
5
解决办法
9796
查看次数

Unmangling(.NET 4.5之前版本)异步/等待堆栈跟踪

由于.NET 4.5之前的运行时(包括SL/WP)不是异步感知的,因此它们生成的堆栈跟踪显示编译器生成的类/方法名称(如d_15).

有没有人知道在给定运行时堆栈跟踪,程序集和pdb的情况下生成更好的堆栈跟踪的实用程序?

要明确:我不是在寻找一个完整的异步堆栈,只是更好地了解实际抛出异常的方法

看来上面的陈述不够清楚,所以这里有一个例子:

public async void Foo()
{
    await Bar();
}

public async Task Bar()
{
    async SomethingToMakeThisMethodAsync();

    throw new Exception()
}
Run Code Online (Sandbox Code Playgroud)

抛出异常时Bar,stacktrace将只包含生成的方法名称(d_15()).我不在乎Foo叫Bar.我只是想知道Bar是抛出异常的方法

debugging exception-handling stack-trace visual-studio async-await

10
推荐指数
1
解决办法
1306
查看次数

来自Asp.Net Web Api异步/任务调用的正确堆栈跟踪

当我正在使用Web Api调用的客户端时发生错误.问题是我回来的堆栈跟踪有点不可读,没有行号,所以我不知道在哪里看.这是作为Json响应返回的.

 "message": "An error has occurred.",
"exceptionMessage": "Object reference not set to an instance of an object.",
"exceptionType": "System.NullReferenceException",
"stackTrace": "   at WakeSocial.Gateway.WebApi.Host.Controllers.NotificationsController.<Response>d__7.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__3`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at …
Run Code Online (Sandbox Code Playgroud)

c# asp.net exception async-await asp.net-web-api2

5
推荐指数
1
解决办法
1290
查看次数