Ich möchte zwei verschiedene GET-Aktionen haben, um die Daten nach Name und ID abzufragen,
Ich habe diese Routen:
%Vor%und diese Aktionen im Controller:
%Vor% während ein Anruf wie folgt: http://localhost:51119/api/companies/CompanyId/3cd97fbc-524e-47cd-836c-d709e94c5e1e
funktioniert und ruft die Methode 'CompanyId' auf,
ein ähnlicher Aufruf von http://localhost:51119/api/companies/CompanyName/something
bringt mich zu 404 nicht gefunden
aber das:
' http://localhost:51119/api/companies/CompanyName/?name=something
' funktioniert gut
Kann jemand dieses Verhalten erklären und was mache ich falsch?
Der Selektor der Web-API-Route kann nicht wissen, ob die Zeichenfolge am Ende Ihrer URL eine GUID ist oder nicht. Daher wird nicht die richtige Route für die entsprechende GET-Aktion ausgewählt.
Um die richtige Route auszuwählen, müssen Sie eine Routenbeschränkung für die GUID-uri-Vorlage hinzufügen.
%Vor%Fügen Sie dann die Einschränkung der Route hinzu, die mit der GUID umgehen soll.
%Vor%Da diese Route spezifischer ist als die allgemeine "string" Route, muss sie über der Route liegen, die den Namen auflöst.
Dies sollte entsprechend zu den Aktionen führen.
Hoffe, das hilft.
Tags und Links asp.net-web-api c# asp.net-mvc-4