【发布时间】:2014-12-12 04:38:21
【问题描述】:
我有一个自定义操作过滤器,用于非常明确的内容长度限制。它的工作方式如下:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Request.ContentLength >= MaxLength)
{
throw new HttpException("MaxLengthFilter: Request has Content-Length > " + MaxLength);
}
base.OnActionExecuting(filterContext);
}
如果对超过最大值的内容长度调用的任何操作返回更有意义的结果,例如 HTTP 404.13,我会更愿意。如果我直接在操作内部进行过滤,我可以使用'return new HttpNotFoundResult()',但过滤器的OnActionExecuting 方法是void 类型。
这更加复杂,因为一些需要过滤的操作是ActionResult,而一些是JsonResult,而后者需要对HttpNotFoundResult进行序列化。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-4 http httpresponse action-filter