ASP.NETWebFormsアプリケーションの古いHttpHandlerAPIのメソッドをオーバーライドする必要がある状況があります。新しいAPIのベースとしてWebAPIを使用していますが、新しいAPIでアクションが見つからない場合にフォールバックするルーティングが必要なことを除けば、うまく機能しています。現在、これは当てはまりません。代わりに、WebAPIコントローラーに一致するアクションがない場合は常に「404:見つかりません」が表示されます。
新しいAPIのルーティングは次のとおりです。
var apiroute = routes.MapHttpRoute(
"API Default",
"api/{language}-{country}/{controller}/{action}/{id}",
new { id = RouteParameter.Optional }
);
古いHttphandlerAPIは、次のようにルートを登録します(順序はWebAPIルートの後にあります)。
var route = new Route("api/{language}-{country}/Person/{command}", this);
RouteTable.Routes.Add(route);
Listアクションを持つPersonControllerがある場合は/api/ en-US / Person / Listを最初のルートに一致させ、ない場合は古いapiにフォールバックします。
質問:アクションが実際にコントローラーで使用可能な場合にのみ一致するように、最初のルートにフィルターを追加することは可能ですか?他にどのようにこれを達成できますか?