在 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");
希望对您有所帮助!
我正在尝试将加密请求发送到 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");
希望对您有所帮助!