【问题标题】:asp.net webapi unhandled exception behaviorasp.net webapi 未处理的异常行为
【发布时间】:2014-06-18 15:50:37
【问题描述】:

使用 Asp.net WebApi 2,希望了解框架如何处理异常。

当服务器在处理请求时发生异常时,看起来有逻辑可以自动将异常转换为 500 响应并吞下异常。

  1. 是否有任何“关键”类型的异常被区别对待? (并导致进程终止?例如 OutOfMemoryException)
  2. 假设这种异常吞咽行为仅适用于当前为请求提供服务的线程是否正确?例如。如果我启动了一个引发异常的后台线程(几乎总是坏的),该进程将终止。

【问题讨论】:

    标签: asp.net iis asp.net-web-api asp.net-web-api2


    【解决方案1】:

    请看下面的答案:

    1. 如果服务器内存不足,肯定会导致整个服务器宕机。因此,API 将不可用于请求。

    在大多数其他情况下,将针对未处理的异常返回 500 响应,HttpResponseException 除外。在这种情况下,状态取决于开发人员定义的值。更多来自这里http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling

    1. 如果在后台线程中抛出未处理的异常,那么它将被吞没。

    为控制器外部抛出的异常设置一个全局异常处理程序是一个很好的做法,即:

    • 控制器构造函数引发的异常。
    • 消息处理程序引发的异常。
    • 路由期间引发的异常。
    • 响应内容序列化期间抛出的异常。

    使用以下教程http://www.asp.net/web-api/overview/web-api-routing-and-actions/web-api-global-error-handling

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-29
      • 2021-08-06
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多