【发布时间】:2014-01-25 11:03:52
【问题描述】:
我有一个简单的 API 控制器方法
public async Task<Models.Timesheet> GetByDate(DateTime date, string user = null)
{
throw new InvalidOperationException();
}
现在的问题是,我在自定义操作过滤器中或仅通过设置 IncludeErrorDetailPolicy.Always 获得的异常堆栈跟踪是这样的
System.InvalidOperationException: Operation is not valid due to the current state of the object.
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.ApiController.<InvokeActionWithExceptionFilters>d__1.MoveNext()
以前使用 Web API v1 会更好。升级到 v2 后,堆栈跟踪几乎无法使用 - 预计使用 async/await 堆栈跟踪将不会像以前那样,但在这种情况下,整个堆栈跟踪甚至不包含任何关于类的提示失败的。是否可以在 Web API 中配置一些东西来缓解这个问题?
【问题讨论】:
标签: c# asp.net asp.net-web-api