C# 如何创建WebAPI2自定义属性并将其返回给客户端?

C# 如何创建WebAPI2自定义属性并将其返回给客户端?,c#,asp.net-mvc,asp.net-web-api2,C#,Asp.net Mvc,Asp.net Web Api2,我想从客户机创建带有参数的WebAPI2自定义属性,并将数据返回给客户机,因为有问题 例如,来自客户端的数据: { id : 1, _token : 221 } 例如,在服务器上: //SomeController Action [CustomActionFilter] public String Foo(int id) { return id; } public class CustomActionFilter : ActionFilterAttribute, IActionFilt

我想从客户机创建带有参数的WebAPI2自定义属性,并将数据返回给客户机,因为有问题

例如,来自客户端的数据:

{ id : 1, _token : 221 }
例如,在服务器上:

//SomeController Action
[CustomActionFilter]
public String Foo(int id)
{
   return id;
}

public class CustomActionFilter : ActionFilterAttribute, IActionFilter
{
    void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
    {
        //get _token from client httprequest parameter
        //return to client if _token != 221
        //next proccess if _token == 221
        // in real case, will cek token in db and compare it
    }
}
请帮助如何在
CustomActionFilter
中获取
\u令牌
,如果
\u令牌
!=221


此外,如果在整个过程中没有问题,请执行下一个过程?

您正在错误地执行许多操作。首先,ActionFilterAttribute本身已经实现了IActionFilter,因此无需在自定义属性中重新实现此接口。其次,令牌不会传递给Foo函数,因此基本上需要更改Foo函数的形式参数。但是,要想让您了解如何做到这一点,请查看以下内容:

public class CustomActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        var id = actionContext.ActionArguments["id"];
    }
}
最后,要返回一个错误,可以在OnActionExecuting方法中执行以下操作:

var response = actionContext.Request.CreateErrorResponse(HttpStatusCode.Forbidden, "my reasonable error message");
actionContext.Response = response;