MVC 4 Fang alle Route nie erreicht

8

Wenn ich versuche, alle Routen in MVC 4 zu erfassen (etwas, auf das ich einige Beispiele gefunden habe und auf dem mein Code basiert), wird der Fehler 404 zurückgegeben. Ich führe dies auf IIS 7.5. Das scheint eine unkomplizierte Lösung zu sein, also was fehlt mir?

Eine Anmerkung, wenn ich die "CatchAll" -Route über die "Standard" -Route verschiebe, funktioniert es. Aber natürlich wird keiner der anderen Controller jemals erreicht.

Hier ist der Code:

Route.Config:

%Vor%

Controller:

%Vor%     
gsxrboy73 13.05.2013, 17:27
quelle

3 Antworten

9

Da das ultimative Ziel der Erstellung der Catchall-Route darin bestand, mit dynamischen URLs umgehen zu können, und ich keine direkte Antwort auf das ursprüngliche Problem finden konnte, wandte ich mich meiner Forschung aus einer anderen Perspektive zu. Dabei stieß ich auf diesen Blogpost: Benutzerdefiniert 404, wenn keine Route übereinstimmt

Diese Lösung ermöglicht die Bearbeitung mehrerer Abschnitte innerhalb einer gegebenen URL (d. h. www.mysite.com/this/is/a/dynamic/route)

Hier ist der letzte benutzerdefinierte Controller-Code:

%Vor%     
gsxrboy73 14.05.2013, 13:10
quelle
4

Es liegt wahrscheinlich daran, dass die Route, auf der Sie dies testen, Ihrer ersten - Standardroute entspricht. Wie das Routing in MVC funktioniert, versucht jede Adresse, die Sie übergeben, die Routen in Ihrer Routensammlung in der Reihenfolge ihres Auftretens zu vergleichen. Sobald die erste übereinstimmende Route gefunden wurde, wird die weitere Ausführung abgebrochen. In diesem Fall ist Ihre Standardroute die erste in der Liste. Wenn sie also übereinstimmt, wird Ihre zweite Route nie überprüft.

Schreiben Sie so etwas wie Ссылка in Ihre Adressleiste und das sollte nicht mit Ihrer Standardroute übereinstimmen und versuchen Sie dann, die CatchAll-Route abzustimmen.

    
Marko 13.05.2013 17:41
quelle
0

Definieren Sie den optionalen String dynamicRoute auf Ihrer Route:

%Vor%     
Marko 13.05.2013 17:59
quelle