c# - tutorial - web api example




404 Fehler nach dem Hinzufügen von Web-API zu einer vorhandenen MVC-Webanwendung (2)

Es gibt eine gute Frage hier: Wie Web API zu einem vorhandenen ASP.NET MVC 4 Web Application-Projekt hinzufügen?

Leider war es nicht genug, um mein Problem zu lösen. Ich habe zweimal versucht, sicher zu sein, dass ich nichts falsch gemacht habe. Ich habe mit der rechten Maustaste auf "Controller" geklickt und den Punkt "Web API 2 Controller mit Aktionen mit Entity Framework" hinzugefügt, wo ich meine Model-Klasse und den db-Kontext ausgewählt habe. Alles ist gut gelaufen ... aber trotzdem ... jedes Mal, wenn ich versucht habe, auf / api / Rest zuzugreifen, bekam ich einen Fehler 404 (Der Name meines Controllers ist RestController).


"Beim Hinzufügen neuer Routen IMMER BEACHTEN SIE, dass Sie am Ende eine bestimmte Route hinzufügen müssen, gefolgt von einer generischeren Route. Andernfalls wird Ihre Web-Anwendung niemals ordnungsgemäß weitergeleitet."

Das obige ist das Zitat von hier: http://www.codeproject.com/Tips/771809/Understanding-the-Routing-Framework-in-ASP-NET-MVC

Ich weiß, dass die Antwort bereits gegeben ist, aber das könnte helfen zu verstehen, warum wir GlobalConfiguration.Configure (WebApiConfig.Register); vor RouteConfig.RegisterRoutes (RouteTable.Routes);


Es funktioniert!!! Ich wollte nicht glauben, aber raten Sie mal, das Problem war mit der Global.asax Routing- Reihenfolge verbunden .

Während es nicht funktioniert mit:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    GlobalConfiguration.Configure(WebApiConfig.Register); //I AM THE 4th
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}      

Es funktioniert mit:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register); //I AM THE 2nd
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}      

Verrückt, ich weiß.





asp.net-web-api