在WebApi2中创建过滤器以过滤图像

时间:2018-07-08 17:20:24

标签: c# filter asp.net-web-api2

我是webapi的新手,并创建了一个web api项目。这里不同的控制器方法需要图像作为参数。我正在使用外部第三方api检查用户上传的图像是否不是亵渎图像。因此,我认为与其使用actionMethod级别进行检查,还不如使用过滤器进行检查,这样可以节省我单独检查的时间,这可能是个好主意。但是我不知道如何开始为此编写代码。

 public class ImageFilter : FilterAttribute,IFilter
{
    public void OnActionExecuting(HttpActionContext httpActionContex)
    {
        if(!httpActionContex.ActionDescriptor.) // ???? what should come
    }
}

请引导我。不需要正确的代码,只需正确的方向和指导..谢谢

1 个答案:

答案 0 :(得分:0)

顾名思义,FilterAttribute是一个属性,可以在WebAPI管道上全局设置,也可以在特定的控制器方法上单独设置。您只需在特定的控制器方法上拍上[ImageFilter]属性,WebAPI管道将在执行操作方法之前执行过滤器-使您有机会过滤对该方法提出的请求。

对于自定义逻辑的实际实现,您可以在HttpContext.Current.Request方法中访问OnActionExecuting,从而可以访问传入的HTTP请求。然后,您可以从中读取数据,将其传递给您的第三方API,如果未通过过滤器,则可以访问Response并在它到达控制器之前结束它:

    var response = HttpContext.Current.Response;
    response.StatusCode = (int)HttpStatusCode.BadRequest; // or whatever
    response.End();