一.定义一个异常筛选器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Filters;
using System.Net;
using System.Net.Http;
namespace WebApi
{
public class NotImplExceptionFilter:ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
if (context.Exception is NotImplementedException)
{
context.Response = new HttpResponseMessage(HttpStatusCode.NotFound);
}
}
}
}
注意:HttpStatusCode.NotFound 状态码只是随意定的,我这里
二.引用过滤器
(1)全局使用(对所有Action有效),在Global.asax中注册异常筛选器,如下
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
GlobalConfiguration.Configuration.Filters.Add(new NotImplExceptionFilter());
}
}
(2)指定Action使用
[NotImplExceptionFilter]
public IEnumerable<Contact> Get(string id = null)
{
...
throw new NotImplementedException("This method is not implemented");
}
三.控制器的Action加引用
public IEnumerable<Contact> Get(string id = null)
{
var thecontact= from contact in contacts
where contact.Id == id || string.IsNullOrEmpty(id)
select contact;
if (thecontact == null || thecontact.Count()==0)
{
var resp = new HttpResponseMessage(HttpStatusCode.NotFound)
{
Content = new StringContent(string.Format("No product with ID={0}", id)),
ReasonPhrase = "Product ID Not Found"
};
throw new NotImplementedException("This method is not implemented");
}
return thecontact;
}