我有一个带有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);
任何想法我该怎么做?
答案 0 :(得分:1)
是的,可以在请求完成后在Web代理中完成
或者您也可以在管道中添加一些中间件。但是如果我理解你的话,你也可以通过自定义绑定器简单地无需处理程序,这将改变你的Message
对象。
How to bind to custom objects in action signatures in MVC/WebAPI
答案 1 :(得分:1)
如果您已经创建了DelegatingHandler
,则需要按如下方式对其进行配置:
GlobalConfiguration.Configuration
.MessageHandlers
.Add(new FooHandler());