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