拦截对象到达控制器

本文关键字:控制器 对象 | 更新日期: 2023-09-27 17:55:06

我有一个控制器GET/POST方法,我想知道是否有可能在到达控制器上的POST方法之前拦截对象。

这是我对Controller的方法:

[Route("{type}")]
[HttpPost]
public HttpResponseMessage Save(string type, [FromBody] Message message)
{
    ....
    return Request.CreateResponse((HttpStatusCode)200, result);
}

是否有可能在Save()方法被调用之前拦截对象Message ?我已经创建了一个DelegatingHandler,但它不起作用。

我是这样添加路由的:

IHttpRoute route = GlobalConfiguration.Configuration.Routes.CreateRoute(
 routeTemplate: "api/message/{type}",
 defaults: new HttpRouteValueDictionary("route"),
 constraints: null,
 dataTokens: null,
 handler: new ValidationHandler());
GlobalConfiguration.Configuration.Routes.Add("MyRoute", route);

你知道怎么做吗?

拦截对象到达控制器

如果您已经创建了您的DelegatingHandler,您将需要按照以下方式配置它:

GlobalConfiguration.Configuration
                  .MessageHandlers
                  .Add(new FooHandler());

是的,它可以在请求发出后在web代理中完成或者您也可以在管道中添加一些中间件。但是,如果我理解正确的话,你也可以简单地没有处理程序,通过自定义绑定来改变你的Message对象。

如何在MVC/WebAPI的动作签名中绑定自定义对象