2

asp.net web api を使用して Http サービスを構築しています。コントローラーに同じパラメーターを持つ 2 つの get メソッドがあります。両方のメソッドに一致するルートを定義する方法がわかりません。そのうちの 1 つだけを呼び出すことができます。もう1つは、コントローラーにアクションメソッドが見つからないというエラーが表示されます。ここに定義されたルートがあります

RouteTable.Routes.MapHttpRoute(
         name: "default",
         routeTemplate: "{controller}/{lang}",
         defaults: new { lang = System.Web.Http.RouteParameter.Optional });
RouteTable.Routes.MapHttpRoute(
         name: "details",
         routeTemplate: "{controller}/{lang}/{action}/{id}");

およびコントローラーのメソッド:

public IQueryable<RecipeDTO> Get(string lang)
{

}

[HttpGet]
public RecipeDTO Details(string lang, int id)
{

}

[HttpGet]
public IQueryable<RecipeDTO> Random(string lang, int count)
{


}

メソッド Details と Random が同じパラメーターを持っていることがわかります。次の呼び出しを行うことができます。

controller-name/en (最初の get メソッドに一致)

controller-name/en/details/1 (details メソッドと一致します)

しかし、私がしようとすると:

コントローラー名/en/random/5

エラー no action method was found on the controller が表示されます。どうすれば修正できますか。

前もって感謝します

4

1 に答える 1