我的情况是大多数请求都会使用专用控制器进行处理。
config.Routes.MapHttpRoute(
name: "DataApi",
routeTemplate: "api/{controller}/{action}",
defaults: new
{
controller = "default"
}
);
但可能会出现根据网址找不到controller
的情况。与api/this_controller_is_not_exists/GetStatus
一样。
如何将这些请求重定向到名为default
的默认控制器,并使用默认控制器内的操作处理此请求?
对默认控制器的有效请求看起来像api/default/GetStatus
。
对于有效和无效的请求,路由将没有太大区别。 有效的:
'api/this_controller_exist/GetStatus'
无效:
'api/this_controller_not_exists/GetStatus'
答案 0 :(得分:1)
如果您有一个名为default
的默认路由映射,并且您的控制器确实存在,那么它会在请求的URI通过{{1}后自动将请求映射到您的控制器this_controller_exist
} RouteData
将会尝试让您的API项目中的所有控制器都使用反射从HttpControllerSelector
继承。因此,如果您问题中的控制器确实存在并且派生自ApiController
,那么如果您在ApiController
中有默认路由映射,则它不会成为问题,否则如果找不到它将诉诸于IIS资源处理最终会导致404 WebApiConfig
错误。