Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拦截对象到达控制器_C#_Asp.net_Asp.net Web Api_Asp.net Web Api2 - Fatal编程技术网

C# 拦截对象到达控制器

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); } 是否可以在

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

以下是我在控制器上的方法:

[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没问题,我有兴趣自己看看被接受的答案。:)我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。