Web.APIルーティングに問題があります。次の2つのルートがあります。
config.Routes.MapHttpRoute(
name: "MethodOne",
routeTemplate: "api/{controller}/{action}/{id}/{type}",
defaults: new { id = RouteParameter.Optional, type = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "MethodTwo",
routeTemplate: "api/{controller}/{action}/{directory}/{report}",
defaults: new { directory = RouteParameter.Optional, report = RouteParameter.Optional }
);
そして私のコントローラーでは、これら2つの方法があります。
[HttpGet]
[ActionName("methodone")]
public string MethodOne(string id, string type)
{
return string.Empty;
}
[HttpGet]
[ActionName("methodtwo")]
public string MethodTwo(string directory, string report)
{
return string.Empty;
}
これらの2つは一見共存することはできません。WebApiConfigでMethodOneルートをコメントアウトすると、MethodTwoルートが機能します。MethodTwoルートにコメントを付けると、MethodOneが機能します。両方をコメントなしのままにしておくと、MethodOneは機能しますが、MethodTwoは機能しません。
私はこれらの両方に1つのルートを使用することを望んでいたので、同じパラメーター名を使用する必要があるようです。ジェネリックパラメーター名でメソッドを作成するのは誰ですか?悪い。メソッドに同じパラメーター名(p1、p2、p3など)を付けたくないので、新しいメソッド専用のルートを作成できると思いました。しかし、これでもうまくいかないようです。
WebGet(UriTemplate="")
WCFの残りの部分が本当に恋しいです。
1つのコントローラーに多くのメソッドがあり、1つ、2つ、3つ、またはそれ以上のパラメーターを持つものもあります。MapHttpRouteアプローチで意味のあるパラメーター名を使用できないとは信じられません。
私はそれを完全にコメントして使用することができましたWebGet()
…しかし、そこに着く前に、何かが足りないかどうかを確認したかったのです。