C# 是否可以在Handler中找到将从其路径处理请求的控制器类

C# 是否可以在Handler中找到将从其路径处理请求的控制器类,c#,asp.net-web-api2,httphandler,C#,Asp.net Web Api2,Httphandler,我们已经实现了一个api服务 我们正在控制器中使用属性路由(config.maphttpAttribute路由();) 我正在尝试编写一个处理程序,它是为某些特定的控制器类工作所必需的 是否可以获取将在中处理请求的实际控制器类 protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { //..

我们已经实现了一个api服务

我们正在控制器中使用属性路由(
config.maphttpAttribute路由();

我正在尝试编写一个处理程序,它是为某些特定的控制器类工作所必需的

是否可以获取将在中处理请求的实际控制器类

protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
    //...
}
受保护的覆盖任务SendAsync(HttpRequestMessage请求,CancellationToken CancellationToken)
{
//...
}
是否有
DelegatingHandler

目前,我可以使用路径对其进行筛选。

如文档中所示,控制器类型的选择和创建是在管道中执行任何
删除句柄
之后,但在任何
身份验证筛选器
授权筛选器
操作筛选器
之前完成的

因此,如果您需要知道哪个控制器将处理请求,最好的选择是在
ActionFilter
中实现您的逻辑(或者可能是
AuthorizationFilter
,因此如果请求无效,您可以完全跳过
ModelBinding


在这里,您可以使用
HttpActionContext
参数的
ControllerContext
属性访问控制器数据。

您确定需要实现
DelegatingHandler
?您的描述清楚地指向一个
ActionFilter
。在操作筛选器中,您可以完全访问调用的请求、控制器和操作。@FedericoDipuma此处理程序检查请求是否有效。如果它们无效,则直接从处理程序返回修复错误响应,而无需初始化控制器。如果我使用ActionFilter,据我所知,控制器也会初始化。如果我错了,请纠正我。是的,他们错了,但从我看到的情况来看,您需要知道选择了哪个控制器。从中可以看到,控制器类型仅在执行任何
DelegatingHandler
之后和任何
过滤器
之前选择(在
HttpControllerDispatcher
内部)。我不相信有任何其他钩点这一点。