在 asp.net web api 2 中绑定到控制器操作方法之前是否有修改请求体的方法

Is there anyway to modify request body before it gets bind to controller action method in asp.net web api 2

我正在尝试将加密请求发送到 asp.net web api 并希望 web api 拦截请求并在它绑定到控制器操作方法之前解密或修改它。

如有任何帮助,我们将不胜感激。

您可以做的是编写您的自定义过滤器。由于您想在绑定之前解码正文内容,因此您必须使用 AuthorizeAttribute。

public class DecryptRequestContent : System.Web.Http.AuthorizeAttribute
{
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        var requestContent = actionContext.Request.Content;
        var newContent = Decryption (requestContent);
        actionContext.Request.Content = newContent;
    }
}

之后,您将不得不用这样的滤镜装饰您的 API:

public class SomeController : ApiController
{
    [DecryptRequestContent]
    public void SomeMethod(DataModel model)
    {
        // implementation goes here
    }
}

我认为解决方案是

actionContext.Request.Content = new StringContent(newContent,Encoding.UTF8,"application/json");

希望对您有所帮助!