首页 > 解决方案 > 无论如何在请求主体绑定到asp.net web api 2中的控制器操作方法之前修改请求主体

问题描述

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

任何帮助将不胜感激。

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

解决方案


您可以做的是编写自定义过滤器。由于您想在绑定之前解码正文内容,因此您必须使用 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
    }
}

推荐阅读