Es wurde keine HTTP-Ressource gefunden, die dem Anforderungs-URI-Fehler in ASP.NET-Web-API entspricht

StackOverflow https://stackoverflow.com//questions/23013509

Frage

Dies ist eine Skizze meiner Transfer-Controller-Klasse.

All dies ist ein Web-API-Code.

generasacodicetagpre.

Dies ist das Routing.

generasacodicetagpre.

Dies ist der Aufruf.

generasacodicetagpre.

und das ist das Ergebnis.

No HTTP resource was found that matches the request URI 'http://localhost:54770/api/Transfer/Queue?sessiondId=0e2c47b9-e674-446d-a06c-ce16932f9580'.

Dies ist eine Skizze meiner Usecontroller-Klasse.

generasacodicetagpre.

Aus grundlegenden Gründen, die für mich unergriffen ist, habe ich keine Schwierigkeiten, etwas im Usercontroller anzurufen. Die Parameter werden genau auf dieselbe Weise geseilt, und die Wege sind verwendet.


Darrel Miller unten verwendet Gerätetests, um die Routen zu bestätigen. Ehrlich gesagt trete ich mich, weil ich nicht daran gedacht habe, und jetzt habe ich das Gleiche getan.

testet jedoch, wie er sie zeigt, wirklich nur das Parsing der URL zu testen. Zum Beispiel passiert dieser Test

generasacodicetagpre.

trotz der auffälligen Fehlen eines Verfahrens auf dem Übertragungsregler.

Das Routenobjekt ist eigentlich kein HTTProute-Objekt, sondern ein httproutedata-Objekt. Das ist aber trivial korrigiert. Das HTTProute-Objekt ist als Eigenschaft des HTTProutedata-Objekts verfügbar.

generasacodicetagpre.

und es wiederum hat eine Handlereigenschaft. Dies ist jedoch weniger informativ, als es sein könnte, da ein Nullhandler einfach bedeutet (von MSDN)

Wenn NULL, der Standardhandler, die Nachrichten an Implementierungen von IHTTPController verschickt.

Jetzt wird mein Controller von APICONTROLLER abgeleitet, der sicherlich die EXECUTEASYNC-Methode implementiert, die das einzige von der IHTTP-Controller-Schnittstelle angegeben ist. Was ich mir vorstellen kann, dass ich die Ausführung dieser Methode testen kann, wenn ich mehr darüber wusste.

War es hilfreich?

Lösung 2

ok dann ... Danke, dass es an, dass Sie die Einheitsprüfung in meinem Kopf anlegen, erhebliche Dinge immens aus.

Hier ist das Towdown:

Sie können identische Parametersignaturen auf verschiedenen Verben haben (POST PUT LELETE).

Sie können nicht identische Parametersignaturen auf unterschiedlichen Aktionsnamen auf demselben Verb aufweisen.

Sie müssen nur variieren einen -Parameternamen.

Das ist also in Ordnung, weil sie alle auf verschiedenen Verben sind

generasacodicetagpre.

Das ist jedoch nicht cool, weil sie beide bekommen

generasacodicetagpre.

und Sie können es so reparieren

generasacodicetagpre.

Ich bin vielleicht ein hartes Arsch, aber soweit ich besorgt bin, ist es nicht geleitet, bis die Methode aufgerufen wird.

Andere Tipps

Hier ist ein Test, der die Routing-Arbeiten in Ordnung, demonstriert,

generasacodicetagpre.

und hier ist ein Test, der die Dispatching / Aktion-Auswahl zeigt, auch funktioniert,

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top