私は WebApi を初めて使用し、パラメーターのマッピングを理解していません。2 つのパラメーターを持つ HttpGet メソッドを持つコントローラーがありました。のように定義された WebApiConfig マッピングで
config.Routes.MapHttpRoute(
name: "MyActionApi",
routeTemplate: "api/{controller}/{action}/{p},{q}");
これはうまくいくように見えました。
同様に、3 つのパラメーター HttpGet メソッドを持つ別のコントローラー (DetailsController) を追加しました。
私は追加しました
config.Routes.MapHttpRoute(
name: "MyActionApi2",
routeTemplate: "api/{controller}/{action}/{p},{q},{r}");
しかし、に移動する
http://mysite/api/Details/CrossReport/12,14,Peter
404エラーを出し、言う
要求に一致するコントローラー「詳細」でアクションが見つかりませんでした。
しかし、このようにナビゲートします
http://mysite/api/Details/FilterByDate/12,14?q=10
正しい結果が得られます。
何故ですか?最初のケースのように、カンマで区切ってください。そして、最初のケースでは機能するのに、2番目のケースでは機能しないのはなぜですか?
作業コントローラーのメソッド:
public IEnumerable<Order> FilterByDate(DateTime dateStart, DateTime dateEnd).
動作していません:
public IEnumerable<Detail> FilterByDate(DateTime dateStart, DateTime dateEnd, int maxCount)
どちらにも HttpGet 属性があります。