C# 如何知道Web API路由引擎何时找不到匹配的服务?
我想将请求记录到我的Web API应用程序,结果是404,这意味着路由引擎找不到匹配的服务 那怎么可能呢 例如,如果我有以下映射:C# 如何知道Web API路由引擎何时找不到匹配的服务?,c#,asp.net-mvc,asp.net-web-api,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Web Api,Asp.net Mvc Routing,我想将请求记录到我的Web API应用程序,结果是404,这意味着路由引擎找不到匹配的服务 那怎么可能呢 例如,如果我有以下映射: config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new {
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new
{
id = RouteParameter.Optional
}
);
然后调用以下命令将返回404:
api_rootNotValid/controllername
我想捕获这些请求并记录它们
我创建了一个从DelegatingHandler继承的类,但只有当路由引擎成功找到服务时,它才会进入DelegatingHandler
因此,我认为应该有其他方法可以帮助您?我认为这是一件棘手的事情……您可能需要考虑的一些信息: 与WebHostIIS和SelfHost相比,路由匹配发生在不同的阶段。Web API供参考 WebHost-甚至在运行任何消息处理程序之前发生。那么你的 如果路由不执行,则委托处理程序甚至不会执行 火柴 SelfHost—在消息处理程序运行并在 HttpRoutingDispatcher。在这种情况下,您的委托处理程序将 执行,可能会检查响应的状态代码, 但由于下一点,即使这样也容易出错。 404响应可能是由于路由不匹配,或者如果路由匹配但某些应用程序级代码已使用404响应,例如:如果未找到id为10的产品,则api/Products/10可以返回404。因此,这里的任务是找出路由匹配是生成404还是生成应用程序级代码 还有这个