背景需求,在进入action之前做sign验证,以及反正错误时,记录log,返回错误的json形式信息。
#region 普通 ActionFilter add by caoheyang 20150319 /// /// sign 以及参数合法性验证过滤器 add by caoheyang 20150318 /// public class SignOpenApiAttribute : System.Web.Http.Filters.ActionFilterAttribute { /// /// 重写OnActionExecuting方法 在进入控制器之前验证 sign以及 参数合法性信息 add by caoheyang 20150318 /// /// public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext) { lock (actionContext) { dynamic paramodel = actionContext.ActionArguments["paramodel"]; //当前请求的参数对象 if (actionContext.ModelState.Count > 0 || paramodel == null) //参数错误,请求中止 actionContext.Response = actionContext.ActionDescriptor.ResultConverter.Convert (actionContext.ControllerContext, ResultModel
//此处标红需要与 apicontroller里应用fillter的action返回值一直。
} } #endregion
ApiController eg。
// POSR: Order GetStatus paramodel 固定 必须是 paramodel /// /// 订单状态查询功能 add by caoheyang 20150316 /// /// [HttpPost] [SignOpenApi] //sign验证过滤器 设计参数验证,sign验证 add by caoheyang 201503167 [OpenApiActionError] //异常过滤器 add by caoheyang 一旦发生异常,客户端返回系统内部错误提示 public ResultModel GetStatus(ParaModel paramodel) { }