为N层Web应用程序构建Web API - 适当的错误处理实践?

时间:2013-03-17 21:41:44

标签: asp.net-mvc web-applications asp.net-mvc-4 asp.net-web-api

我有一个包含以下图层的Web应用程序:

  1. 客户端(一个或多个)
  2. 的WebAPI
  3. 服务
  4. 存储库
  5. 核心
  6. 我不知道在哪里放错误处理。在webAPI控制器中,我应该只有try / catch语句吗?可以在服务/存储库代码中抛出错误吗?我试图避免将任何数据传递给客户端,除了一些友好的错误消息。

2 个答案:

答案 0 :(得分:2)

应在服务层处理业务错误(例如,用户名已存在)。在所有控制器操作中放置try / catch语句可能很快变得麻烦并导致重复的代码。您可以查看custom error handling article,它提供了处理Web API中各种错误的示例,例如自定义错误过滤器(从ExceptionFilterAttribute类派生并覆盖OnException方法)。

答案 1 :(得分:0)

您可以创建一个可由ExceptionFilter或http模块拦截的自定义异常类型。它将设置HTTP状态代码和描述。或者,它也可以返回带有错误数据的序列化对象。

其他异常类型将返回状态代码500。