Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 包含带有HttpResponseException的堆栈跟踪_C#_Asp.net_Exception_Asp.net Web Api_Stack Trace - Fatal编程技术网

C# 包含带有HttpResponseException的堆栈跟踪

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

我正在研究IIS中的stacktraces,因此我创建了一个WebApi项目,其端点会引发异常

如果我抛出一个普通异常:

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"
}