API-Routing 404 Wenn der optionale Parameter vermisst wird
-
21-12-2019 - |
Frage
Ich habe dieses Routing in meinem Webapiconfig
eingerichtet generasacodicetagpre.und diese Methoden innen /api/productcontroller.cs
generasacodicetagpre.Ich kann Anfragen / API / Produkt / GetProduct / 10000 anfordern und JSON zurückrufen.
Wenn ich Anfrage / API / Produkt / GetTest bekomme, bekomme ich 404
Wenn ich nicht wechsle zu
generasacodicetagpre.und Anforderung / API / Produkt / GetTest / 10000 Ich erhalte JSON.
Ich habe keine Ahnung, warum das 404 passiert.Ich habe andere Controller (für Nicht-API-Anfragen), die als normal behandeln.Ich bin nach einigen Jahren von Webformen neu auf MVC, und das hat mich stumpiert.Zum Verweis, hier ist mein RouteConfig
generasacodicetagpre.und mein application_start
generasacodicetagpre.Lösung
Dies ist auf die Reihenfolge Ihrer Routen zurückzuführen.
generasacodicetagpre.wird vor
genannt generasacodicetagpre.und Ihre Registrierungstechnik enthält eine Standard- (und sehr generische) Route
generasacodicetagpre.Diese generische (Standard-) Regel entspricht Ihrem URL-Muster von
generasacodicetagpre.Bevor Ihre Webapi-Route eine Chance ergibt, ihn anzugehen.
Sie können diese supergenerische Route entweder loswerden, wenn Sie nicht benötigt werden (und spezielle Routen verwenden), oder bewegen Sie einfach den Anruf auf
generasacodicetagpre., um vor dem Anruf zu kommen, zu
generasacodicetagpre.in Ihrem global.asax.
Ich habe mit allen Info, die Sie gegeben haben, eine Probe gebaut und diesen Anruf bewegt, der gut funktioniert. Ich hoffe das hilft.