当一个web api抛出一个异常后

此异常会被转化成一个HTTP响应

错误代码为500的服务错误

但是如果你不想让客户端看到500的错误码

你也可以自定义错误码

如下代码当用户输入的ID没有与之相关的数据

则返回了错误码为404的错误

(页面未找到)

public Product GetProduct(int id)
{ Product item = repository.Get(id); if (item == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)); } return item;
}

如果需要进一步自定义错误消息的内容

可以通过如下方法来完成

public Product GetProduct(int id)
{ Product item = repository.Get(id); if (item == null) { var resp = new HttpResponseMessage(HttpStatusCode.NotFound) { Content = new StringContent(string.Format("No product with ID = {0}", id)), ReasonPhrase = "Product ID Not Found" } throw new HttpResponseException(resp); } return item;
}

结果如下图所示

另外

开发人员可以托管异常的抛出

异常过滤器可以接到controller抛出的任何未处理异常,

并不单单是HttpResponseException

异常过滤器实现了System.Web.Http.Filters.IExceptionFilter接口

 using System; using System.Net; using System.Net.Http; using System.Web.Http.Filters; public class NotImplExceptionFilter : ExceptionFilterAttribute  { public override void OnException(HttpActionExecutedContext context) { if (context.Exception is NotImplementedException) { context.Response = new HttpResponseMessage(HttpStatusCode.NotImplemented); } } }

光创建了异常过滤器还不够

还要注册到系统中去才有效

    public class WebApiApplication : System.Web.HttpApplication{static void ConfigureApi(HttpConfiguration config){config.Filters.Add(new HelloWebAPI.Controllers.NotImplExceptionFilter());} protected void Application_Start(){AreaRegistration.RegisterAllAreas();ConfigureApi(GlobalConfiguration.Configuration);FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);BundleConfig.RegisterBundles(BundleTable.Bundles);}}

我目前还不知道怎么在这里注册这个过滤器

运行的效果如下

另外

如果知识针对某个类或者某个action处理异常

也可以使用特性的写法

        [NotImplExceptionFilter]public IEnumerable<Product> AllProducts(){

转载于:https://www.cnblogs.com/eric-qin/p/5320953.html

WEB API异常处理相关推荐

  1. Asp.Net Web API 2第七课——Web API异常处理

    Asp.Net Web API 2第七课--Web API异常处理 原文:Asp.Net Web API 2第七课--Web API异常处理 前言 阅读本文之前,您也可以到Asp.Net Web AP ...

  2. 【翻译】ASP.NET WEB API异常处理

    当一个web api抛出一个异常后 此异常会被转化成一个HTTP响应 错误代码为500的服务错误 但是如果你不想让客户端看到500的错误码 你也可以自定义错误码 如下代码当用户输入的ID没有与之相关的 ...

  3. 循序渐进学.Net Core Web Api开发系列【14】:异常处理

    循序渐进学.Net Core Web Api开发系列[14]:异常处理 参考文章: (1)循序渐进学.Net Core Web Api开发系列[14]:异常处理 (2)https://www.cnbl ...

  4. Web API系列(三)统一异常处理

    前面讲了webapi的安全验证和参数安全,不清楚的朋友,可以看看前面的文章,<Web API系列(二)接口安全和参数校验>,本文主要介绍Web API异常结果的处理.作为内部或者是对外提供 ...

  5. Contact Manager Web API 示例[4] 异常处理(Exception Handling)

    联系人管理器web API是一个Asp.net web api示例程序,演示了通过ASP.NET Web API 公开联系信息,并允许您添加和删除联系人,示例地址http://code.msdn.mi ...

  6. Asp.net Web Api 路由 和 异常处理

    一.路由: 新建一个ASP.NET MVC4 Web Application项目之后,我们会发现在网站根目录下有个App_Start文件夹.找到下面的RouteConfig.cs文件,如下: publ ...

  7. [Web API] 如何让 Web API 统一回传格式以及例外处理[转]

    [Web API] 如何让 Web API 统一回传格式以及例外处理 前言 当我们在开发 Web API 时,一般的情况下每个 API 回传的数据型态或格式都不尽相同,如果你的项目从头到尾都是由你一个 ...

  8. ASP.NET Web API 特性

    ASP.NET MVC 4 包含了 ASP.NET Web API, 这是一个创建可以连接包括浏览器.移动设备等多种客户端的 Http 服务的新框架, ASP.NET Web API 也是构建 RES ...

  9. ASP.NET Core Web API 最佳实践指南

    原文地址: ASP.NET-Core-Web-API-Best-Practices-Guide 介绍 当我们编写一个项目的时候,我们的主要目标是使它能如期运行,并尽可能地满足所有用户需求. 但是,你难 ...

  10. WEB API 系列(二) Filter的使用以及执行顺序

    在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don't Repeat Yourself)思想 ...

最新文章

  1. 基于HTML5 Canvas实现工控2D叶轮旋转
  2. docker linux 快速开窗口_Linux快速搭建Docker-阿里云开发者社区
  3. Qt中的QFileDialog
  4. numpy笔记整理 multivariate_normal(多元正态分布采样)
  5. 你知道我们平时在CSS中写的%都是相对于谁吗?
  6. HDU多校2 - 6774 String Distance(序列自动机优化lcs)
  7. 常用php时间戳格式化与转换
  8. (六)python3 只需3小时带你轻松入门——循环
  9. leetcode数组汇总_[LeetCode] 300. 最长上升子序列
  10. 4月还完债务,“真还传”大结局?罗永浩回应:纯属造谣...
  11. 制作一个可安装、可启动、可停止、可卸载的Windows service
  12. indigo中用roslaunch启动RViz观察机器人模型
  13. 2021.01.04
  14. HDU 2825 Wireless Password(AC自动机 + 状压DP)题解
  15. java实验报告心得_Java实验报告(一)及总结
  16. Python数据结构-列表
  17. Git恢复被删除的文件
  18. 一起学爬虫(Python) — 23 自动化详解2
  19. JAVA定时调度框架Quartz使用案例
  20. doom3 entitydef实体定义

热门文章

  1. 十四、final关键字
  2. 4.jvm初体验-内存溢出问题的分析与解决
  3. wamp怎么安装mysql服务器_使用WAMPServer套件可安装Apache服务器和MySQL服务器
  4. 阶段3 2.Spring_08.面向切面编程 AOP_4 spring基于XML的AOP-配置步骤
  5. 正则表达式(三)操作符的运算优先级、全部符号的解释
  6. 跨域请求的两种实现方式
  7. 聊聊、Integer 封装特性
  8. Android Butterknife框架 注解攻略
  9. 【会议】2009-1-6
  10. JavaScript中清空数组最有效的三种方法