【发布时间】:2012-12-02 07:10:02
【问题描述】:
我有一种情况,我需要在 ASP.NET WebForms 应用程序中覆盖旧 HttpHandler API 中的方法。我使用 WebAPI 作为新 API 的基础,它运行良好,除了在新 API 中找不到操作时我需要路由回退。目前这不是真的,相反,只要 WebAPI 控制器没有匹配的操作,我就会得到“404:未找到”。
我对新 API 的路由如下:
var apiroute = routes.MapHttpRoute(
"API Default",
"api/{language}-{country}/{controller}/{action}/{id}",
new { id = RouteParameter.Optional }
);
旧的 Httphandler API 注册路由如下(顺序在 WebAPI 路由之后):
var route = new Route("api/{language}-{country}/Person/{command}", this);
RouteTable.Routes.Add(route);
如果有一个带有 List 操作的 PersonController,我希望 /api/en-US/Person/List 匹配第一个路由,但如果没有,则回退到旧 api。
问题:是否可以在第一个路由中添加一个过滤器,以便仅在控制器上确实有 Action 时才匹配?我还能如何做到这一点?
【问题讨论】:
标签: asp.net routing webforms asp.net-web-api asp.net-routing