asp.net webapi未处理的异常行为

时间:2014-05-02 02:58:13

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

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

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

  1. 是否有任何关键的'处理不同的例外类型? (并导致流程终止?例如OutOfMemoryException)
  2. 假设此异常吞咽行为仅适用于当前为请求提供服务的线程,这是正确的吗?例如。如果我启动了一个抛出异常的后台线程(几乎总是坏的),那么进程将终止。

1 个答案:

答案 0 :(得分:0)

请参阅以下答案:

  1. 如果服务器内存不足,那么整个服务器肯定会被关闭。因此,API无法提出请求。
  2. 在大多数其他情况下,对于未处理的异常,将返回500响应,但 HttpResponseException 除外。在这种情况下,状态取决于开发人员定义的值。更多来自http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling

    1. 如果在后台线程中抛出未处理的异常,则会被吞下。
    2. 对于在控制器外部抛出的异常具有全局异常处理程序是一种很好的做法,即:

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

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