最後に、解決策があります。パラメータの型に応じてメソッドを呼び出せるルーティング設定を探していました。
config.Routes.MapHttpRoute( _
name:="apiById", _
routeTemplate:="api/{controller}/{prodid}", _
defaults:=New With {.controller = "Products"}, constraints:=New With {.prodid
= "^\d+$"})
config.Routes.MapHttpRoute( _
name:="apiByname", _
routeTemplate:="api/{controller}/{categoryName}", _
defaults:=New With {.controller = "Products"})
config.Routes.MapHttpRoute( _
name:="apiByAction", _
routeTemplate:="api/Products", _
defaults:=New With {.controller = "Products"})
見つからないリンクは、最初のルートで制約を使用して、数値のみを受け入れるように指定していました。例: api/products/1 2 番目の構成は、カテゴリ名の URL で指定された文字列値などの残りの要求を処理します 例: api/products/books 3 番目の構成は、パラメーターを持たないアクション メソッドへのすべての要求にルーティングします
また、 prodid,categoryname などの正しいパラメーター名 routetemplate を使用することも重要です。名前は、対応するアクション メソッドで宣言されているものと同じである必要があります。