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

C# 在WebApi2中创建过滤器以过滤图像,c#,filter,asp.net-web-api2,C#,Filter,Asp.net Web Api2,我是webapi的新手,并创建了一个webapi项目。这里不同的控制器方法需要图像作为参数。我使用一个外部的第三方api来检查用户上传的图像是否不是任何亵渎的图像。因此,与其在actionMethod级别进行检查,不如使用过滤器进行检查,这样可以节省我单独检查的时间。但是我还不知道如何开始为此编写代码 public class ImageFilter : FilterAttribute,IFilter { public void OnActionExecuting(HttpAction

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

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

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

正如其名称所示,FilterAttribute是一个属性,可以在WebAPI管道上全局设置,也可以在特定的控制器方法上单独设置。您只需在特定的控制器方法上添加
[ImageFilter]
属性,WebAPI管道将在执行action方法之前执行过滤器,这使您有机会过滤向该方法发出的请求

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

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