60 votes

Ajouter une API Web à une application Web MVC 5 existante

Il y a un bon fil conducteur ici : Comment ajouter une API Web à un projet d'application Web ASP.NET MVC 4 existant ?

Malheureusement, il ne semble pas fonctionner pour MVC5. J'ai essayé deux fois pour être sûr que je n'ai rien fait de mal. J'ai suivi exactement les mêmes étapes. J'ai fait un clic droit sur "Controllers" et j'ai ajouté l'élément "Web API 2 Controller with actions, using Entity Framework" où j'ai sélectionné ma classe de modèle et mon contexte db. Tout s'est bien passé... mais quand même... chaque fois que j'ai essayé d'accéder à /api/Rest, j'ai obtenu une erreur 404 (le nom de mon contrôleur est RestController).

J'espère vraiment que vous pourrez m'aider. Celle-ci aidera sûrement beaucoup d'utilisateurs !

119voto

Luis Gouveia Points 599

Ça marche ! !! Je ne voulais pas y croire, mais devinez quoi, le problème était lié au routage de Global.asax. commander .

Bien que ça ne fonctionne pas avec :

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);
}      

Il fonctionne avec :

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);
}      

C'est fou, je sais.

3voto

Sergey Points 40

"Lorsque vous ajoutez de nouvelles routes, gardez toujours à l'esprit que vous devez ajouter une route spécifique en haut de la page, suivie d'une route plus générique à la fin. Sinon, votre application web ne recevra jamais un routage correct."

La citation ci-dessus est celle d'ici : http://www.codeproject.com/Tips/771809/Understanding-the-Routing-Framework-in-ASP-NET-MVC

Je sais que la réponse est déjà donnée, mais cela pourrait aider à comprendre pourquoi nous avons besoin de mettre des GlobalConfiguration.Configure(WebApiConfig.Register) ; avant RouteConfig.RegisterRoutes(RouteTable.Routes) ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X