Asp.net Web Api开发(第三篇)自定义异常过滤器
发表时间:2016-6-17
发布人:葵宇科技
浏览次数:50
如果不自定义异常过滤器,客户端调用API出现错误时,将只能得到一个500之类的错误状态,以及一句:出现错误。而服务端却无法拦截到任何异常代码,当然你也可以在所有Action里面写try-catch来捕获处理。但这不是我想要的,我们可以自定义一个异常过滤器来捕获单个Action或整个Controller里面的所有Action的异常。
上代码:
using System.Net;
using System.Net.Http;
using System.Web.Http.Filters;
using RRP.Models.Response;
namespace RRPService.WebApi.Comm
{
/// <summary>
/// 异常处理过滤器
/// </summary>
public class DExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void>
using System.Linq;
using System.Web.Http;
namespace RRPService.WebApi.App.Controllers
{
[DExceptionFilter]
public class CompanyController : ApiController
{
[HttpPost]
[Route("api/1110")]
public RRP.Company.Models.Response.C3000O Login(RRP.Company.Models.Request.C3000I aIn)
{
return RRP.Company.BLL.C3000(aIn);
}
[DExceptionFilter]
[HttpPost]
[Route("api/1110")]
public RRP.Company.Models.Response.C3001O Login2(RRP.Company.Models.Request.C3001I aIn)
{
return RRP.Company.BLL.C3001(aIn);
}
}
}
最后,在Global.asax中注册我们得自定义异常过滤器:
using RRPService.WebApi.Comm;
using System.Web.Http;
using System.Web.Mvc;
namespace RRPService.WebApi.App
{
/// <summary>
/// web api 服务
/// </summary>
public class WebApiApplication : System.Web.HttpApplication
{
/// <summary>
/// 服务启动
/// </summary>
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
GlobalConfiguration.Configuration.Filters.Add(new DExceptionFilterAttribute());//<<<<------------------重点
//Json序列化库替换
HttpConfiguration fConfig = GlobalConfiguration.Configuration;
fConfig.Formatters.Remove(fConfig.Formatters.JsonFormatter);
fConfig.Formatters.Remove(fConfig.Formatters.XmlFormatter);
fConfig.Formatters.Insert(0, new JilFormatter());
}
}
}