Fehler 404 wird beim ASP.NET MVC Area Routing nicht gefunden

8

Ich habe ein Problem mit einer Gebietsroute in MVC 5. Wenn ich nach / Evernote / EvernoteAuth browse, bekomme ich einen Fehler 404 Fehler gefunden.

Mein Bereich sieht so aus:

%Vor%

Die EvernoteAreaRegistration.cs (UPDATE: RegisterArea () wurde nicht aufgerufen, also habe ich ein Clean und Rebuild. Jetzt heißt es aber dasselbe Ergebnis.) enthält diese Routemap:

%Vor%

Die Index () - Methode von EvernoteAuthController gibt einfach View () zurück.

Die RouteConfig.cs meiner Anwendung hat derzeit keine Routenkarten definiert, aber ich habe versucht, sie manuell zu erzwingen, indem ich folgendes implementiere:

%Vor%

aber ich bekomme die gleichen Ergebnisse, ob diese Routemap existiert oder auskommentiert ist.

Mit Phil Haacks asp.net mvc routing Debugger habe ich das gesehen Meine Routen stimmten gut überein und der Name des Bereichs, der Name des Controllers und die Namen der Aktionsmethoden stimmten überein. Ich habe Haltepunkte in die Controller-Aktionsmethoden gesetzt und diese Methoden wurden nie eingegeben. UPDATE: Diese Methoden wurden nie beim Browsen nach / Evernote / EvernoteAuth eingegeben. Wenn ich jedoch nur den Gebietsnamen / Evernote durchsucht habe, wurde ein EvernoteAuthController instanziiert und die Index () -Methode aufgerufen. (Warum wird dieser Controller von / Evernote nicht von / Evernote / EvernoteAuth instanziiert?) Dann erhielt ich den Fehler:

%Vor%

In diesem Fall glaube ich ~ = / (Anwendungsstamm). Daher wird der Bereich Areas\Evernote\Views nicht durchsucht.

Wie behebe ich Fehler?

    
Howiecamp 22.08.2014, 15:27
quelle

3 Antworten

17

Es ist wichtig, dass Sie Ihrem Controller den richtigen Namespace hinzufügen

%Vor%

So kann das Routing Ihren Controller finden. Jetzt müssen Sie den Bereich in der Global.asax.cs mit der Methode

registrieren %Vor%     
DavideDM 20.04.2015, 16:22
quelle
2

Wie Sie in meinem Beitrag in Ссылка gefunden haben, haben Sie wahrscheinlich herausgefunden, dass Alle -Controller werden der Standardroute zugeordnet (dh der Route, die Sie manuell in Ihrer Routenkonfiguration hinzugefügt haben). Wenn es der Standardroute hinzugefügt wurde, durchsucht es den Standort nach der Standardroute für seine Ansichten, d. H.% Co_de%

Der Fehler scheint wirklich zu sein, dass der Bereich nicht richtig konfiguriert ist. Stellen Sie sicher, dass Sie die folgende Zeile in Ihrer Global.asax.xs haben:

%Vor%

Dies ist die Zeile, die die Bereiche tatsächlich einrichtet und sicherstellt, dass, wenn ein Controller in einem Bereich getroffen wird, das View-Verzeichnis dieses Bereichs durchsucht wird, in Ihrem Fall ~/Views/... . Die Sache, die in meinem Blogpost behandelt wurde, war, wie man eliminiert, dass Controller aus Ihrem Evernote-Bereich in der Standardroute zugeordnet werden.

Hoffe diese Hilfe!

Grüße

Håkan

    
Håkan Edling 25.08.2014 06:14
quelle
2

Seien Sie vorsichtig mit AreaRegistration.RegisterAllAreas(); in% Application_Start Methode.

Wenn Sie AreaRegistration.RegisterAllAreas() als letztes in Application_Start einfügen, funktioniert das nicht.

Setzen Sie AreaRegistration.RegisterAllAreas() auf den ersten Platz und das Routing wird erfolgreich ausgeführt.

Beispiel:

%Vor%     
Ivan 03.08.2016 19:43
quelle