C# 拦截对象到达控制器
我有一个带有GET/POST方法的控制器,我想知道是否有可能在到达控制器上的POST方法之前拦截对象 以下是我在控制器上的方法:C# 拦截对象到达控制器,c#,asp.net,asp.net-web-api,asp.net-web-api2,C#,Asp.net,Asp.net Web Api,Asp.net Web Api2,我有一个带有GET/POST方法的控制器,我想知道是否有可能在到达控制器上的POST方法之前拦截对象 以下是我在控制器上的方法: [Route("{type}")] [HttpPost] public HttpResponseMessage Save(string type, [FromBody] Message message) { .... return Request.CreateResponse((HttpStatusCode)200, result); } 是否可以在
[Route("{type}")]
[HttpPost]
public HttpResponseMessage Save(string type, [FromBody] Message message)
{
....
return Request.CreateResponse((HttpStatusCode)200, result);
}
是否可以在调用方法Save()之前截获对象消息?我已经创建了一个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);
有什么办法吗?是的,可以在提出请求后在web代理中完成 或者您也可以在管道中添加一些中间件。但如果我没弄错的话,您也可以不用处理程序,通过自定义绑定器来更改
消息
对象
如果您已经创建了
DelegatingHandler
,则需要按如下方式对其进行配置:
GlobalConfiguration.Configuration
.MessageHandlers
.Add(new FooHandler());
我猜OP可能会更详细一点。我已经阅读了这个链接,但我认为最好的方法是使用处理程序,因为我想在继续执行控制器方法之前执行一些验证。你有什么理由不将验证放在自定义绑定类中吗?一点也没有,但我想做点什么更抽象的是,为每个绑定做一些特定的东西。我已经尝试过了,但我不希望每个请求都碰到我的委托处理程序。是否可以为特定请求配置处理程序(该请求与我在文章中展示的方法相同)?@如果您可以在路由级别执行此操作,本文有一个示例:我将再次检查它,因为上次尝试时它无法工作。谢谢你的帮助:)@placboom没问题,我有兴趣自己看看被接受的答案。:)我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。