c# - 停止在 WebAPI 中显示整个堆栈跟踪

标签 c# .net asp.net-web-api stack-trace asp.net-web-api2

WebAPI 中发生意外错误时,用户会看到整个堆栈跟踪。

我认为显示整个堆栈跟踪是不安全的。

停止向我的用户显示整个跟踪的默认行为是什么?

只是一个友好的消息,比如说 Internal Server Error 就足够了。正确吗?

有什么想法吗?

<?xml version="1.0"?>
<Error>
  <Message>An error has occurred.</Message>
  <ExceptionMessage>The method or operation is not implemented.</ExceptionMessage>
  <ExceptionType>System.NotImplementedException</ExceptionType>
  <StackTrace>   at MyCompany.BLL.RequirementOfService.Employee1.Employee1Service.MakeRequirementOfService(RequirementOfService RequirementOfService) in d:\Projects\MyFolder\Testing\WhiteBox\MyCompany.BAL.RequirementOfService\Employee1\Employee1Service.cs:line 37
   at MyCompany.BLL.RequirementOfService.RequirementOfServiceBLL.MakeRequirementOfService(RequirementOfService RequirementOfService) in d:\Projects\MyFolder\Testing\WhiteBox\MyCompany.BAL.RequirementOfService\RequirementOfServiceBLL.cs:line 76
   at MyCompany.RequirementOfService.Windsor.RequirementOfServiceProvider.MakeRequirementOfService(RequirementOfService RequirementOfService) in d:\Projects\MyFolder\Testing\WhiteBox\MyCompany.RequirementOfService\Windsor\RequirementOfServiceProvider.cs:line 47
   at MyCompany.RequirementOfService.RequirementOfService.Controllers.RequirementOfServiceController.Post(RequirementOfServiceDTO RequirementOfServiceDTO) in d:\Projects\MyFolder\Testing\WhiteBox\MyCompany.RequirementOfService\RequirementOfService\Controllers\RequirementOfServiceController.cs:line 87
   at lambda_method(Closure , Object , Object[] )
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.&lt;&gt;c__DisplayClass10.&lt;GetExecutor&gt;b__9(Object instance, Object[] methodParameters)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- 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.ApiControllerActionInvoker.&lt;InvokeActionAsyncCore&gt;d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

最佳答案

只需将配置IncludeErrorDetailPolicy更改为LocalOnly,详细信息将不会发送到客户端。

此处:http://www.asp.net/web-api/overview/extensibility/configuring-aspnet-web-api

关于c# - 停止在 WebAPI 中显示整个堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24733268/

相关文章:

c# - 无法将透明代理强制转换为来自 AppDomain 的类型

c# - WebApi 中用于响应的 DelegatingHandler

c# - 数据库规范化和重复值

c# - 为什么不能直接在外部调用公共(public)事件?

c# - DbConnection 超出范围时是否关闭并处置?

c# - 如何在 Controller 类中有多个 Put 动词

.net - 在没有高级查询编辑器的情况下将具有基于 token 的身份验证的 Odata 源连接到 Power BI

c# - 如果作为托管身份运行,您可以创建/删除/更新存储的访问策略吗?

c# - 如何使用 C# 提取括号之间的所有字符串?

c# - 如何在 visual studio 2010 中提升 XAML 设计器?