Immer Fehler 404 nicht gefunden ASP.NET MVC routing-Bereich
Ich habe ein problem mit einer Fläche route in MVC 5. Wenn ich navigieren Sie zu " /Evernote/EvernoteAuth bekomme ich eine 404-Ressource nicht gefunden Fehler.
Meinem Bereich sieht das so aus:
Areas
Evernote
Controllers
EvernoteAuthController
Views
EvernoteAuth
Index.cshtml
Den EvernoteAreaRegistration.cs (UPDATE: RegisterArea() nicht aufgerufen wird, also habe ich ein Clean und Rebuild. Jetzt heißt es aber dasselbe Ergebnis.) enthält diese route Karte:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Evernote_default",
"Evernote/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
Den EvernoteAuthController die Index () - Methode gibt einfach Anzeigen().
Meine Anwendung RouteConfig.cs hat derzeit keine Streckenkarten definiert, aber ich habe versucht manuell zu "zwingen", hier durch die Umsetzung dieser:
routes.MapRoute(
name: "EvernoteAuthorization",
url: "Evernote/{controller}/{action}",
defaults: new { controller = "EvernoteAuth", action = "Index", id = UrlParameter.Optional },
namespaces: new string[] { "AysncOAuth.Evernote.Simple.SampleMVC.Controllers" }
);
aber ich bekomme die gleichen Ergebnisse, ob diese Karte vorhanden ist oder auskommentiert wurde.
Verwendung von Phil Haack ist asp.net mvc routing-debugger sah ich, dass meine Routen abgestimmt Ordnung und der Bereich, name, controller-Namen und Action-Methode-Namen abgestimmt. Ich setzen Sie Haltepunkte in der controller-action-Methoden, und diese Methoden waren nie eingetragen. UPDATE: Diese Methoden waren nie eingetragen, der beim navigieren zu /Evernote/EvernoteAuth allerdings, wenn ich durchsucht nur den Bereich name /Evernote, eine EvernoteAuthController instanziiert wurde und der Index () - Methode aufgerufen wurde. (Warum ist, dass der controller instanziiert wird vom /von Evernote nicht durch /Evernote/EvernoteAuth?) Dann erhielt ich die Fehlermeldung:
The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/EvernoteAuth/Index.aspx
~/Views/EvernoteAuth/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/Views/EvernoteAuth/Index.cshtml
~/Views/Shared/Index.cshtml
and so on...
In diesem Fall glaube ich, ~ = /(root der Anwendung). So ist das Gebiet Areas\Evernote\Views
wird nicht gesucht.
Wie kann ich dies beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es wichtig tha fügen Sie den richtigen namespace zu Ihrer Steuerung
Also das routing finden Sie Ihren controller.
Jetzt müssen Sie sich der Gegend, in der Globalen.asax.cs mit der Methode
Vorsichtig sein mit
AreaRegistration.RegisterAllAreas();
innenApplication_Start
Methode.Wenn Sie
AreaRegistration.RegisterAllAreas()
werden letzten InnenseiteApplication_Start
das wird nicht funktionieren.Setzen
AreaRegistration.RegisterAllAreas()
Erster werden, und das routing wird erfolgreich ausgeführt.Beispiel:
Wie Sie in meinem Beitrag bei http://legacy.piranhacms.org/the-magic-of-mvc-routing-with-multiple-areas Sie wahrscheinlich herausgefunden, das alle Controller zugeordnet sind, wird die default-route (ich.e, die Sie manuell hinzufügen, die in Ihrer route config). Wenn es Hinzugefügt wurde, um die default-route, dann wird es suchen Sie den Speicherort für die default-route für seine Ansichten, ich.e
~/Views/...
Also der Fehler scheint wirklich zu sein, dass die Bereich ist nicht richtig konfiguriert. Stellen Sie sicher, dass Sie die folgende Zeile in deine Global.asax.xs:
Dies ist die Linie, die tatsächlich legt die Bereiche und stellt sicher, dass, wenn ein controller in einem Bereich getroffen wird, das view-Verzeichnis der Bereich gesucht, in deinem Fall
~/Areas/Evernote/Views
. Das Ding bedeckt, in meinem blog-Beitrag war, wie zu beseitigen, dass die Controller von Ihrem Evernote-Bereich zugeordnet werden, in der Standard-route.Hoffe diese Hilfe!
Hinsichtlich
Håkan