C# 包含带有HttpResponseException的堆栈跟踪
我正在研究IIS中的stacktraces,因此我创建了一个WebApi项目,其端点会引发异常 如果我抛出一个普通异常:C# 包含带有HttpResponseException的堆栈跟踪,c#,asp.net,exception,asp.net-web-api,stack-trace,C#,Asp.net,Exception,Asp.net Web Api,Stack Trace,我正在研究IIS中的stacktraces,因此我创建了一个WebApi项目,其端点会引发异常 如果我抛出一个普通异常: throw new Exception("demo bug - Exception"); 我得到一个完整的堆栈跟踪,如下所示: { "Message": "An error has occurred.", "ExceptionMessage": "demo bug - Exception", "ExceptionType": "System.Exce
throw new Exception("demo bug - Exception");
我得到一个完整的堆栈跟踪,如下所示:
{
"Message": "An error has occurred.",
"ExceptionMessage": "demo bug - Exception",
"ExceptionType": "System.Exception",
"StackTrace": " at DemoBug.Controllers.DefaultController.FooBar() in C:\\Workspace\\DemoBug\\DemoBug\\Controllers\\DefaultController.cs:line 24\r\n at DemoBug.Controllers.DefaultController.Bar() in C:\\Workspace\\DemoBug\\DemoBug\\Controllers\\DefaultController.cs:line 19\r\n at DemoBug.Controllers.DefaultController.Foo() in C:\\Workspace\\DemoBug\\DemoBug\\Controllers\\DefaultController.cs:line 14\r\n at DemoBug.Controllers.DefaultController.Get() in C:\\Workspace\\DemoBug\\DemoBug\\Controllers\\DefaultController.cs:line 30\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\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 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.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.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"
}
然后我只得到消息
部分:
{
"Message": "demo bug - HttpResponseException"
}
如何将堆栈跟踪也包括在HttpResponseException中?我不确定您是否可以。如何总是抛出一个“真正的”异常,然后有一个异常过滤器来格式化你想要的响应?我不确定你可以。总是抛出一个“真正的”异常,然后使用一个异常过滤器来格式化您想要的响应,怎么样?
{
"Message": "demo bug - HttpResponseException"
}