web-dev-qa-db-fra.com

Que fait IAppbuilder.UseWebApi?

J'ai récemment travaillé sur un site MVC qui a une API et dans le startup.cs il y a une ligne qui dit app.UseWebApi. J'ai fait quelques recherches mais je n'ai pas pu trouver une réponse décente de ce qu'il fait. Quelqu'un peut-il expliquer le concept pour moi? Merci!

30
David Carek

Il configure l'API Web ASP.NET pour s'exécuter au-dessus de OWIN . OWIN résume un serveur Web et vous pouvez l'exécuter sur les deux IIS ainsi que HTTP.SYS qui vous permet de fournir un serveur Web dans votre propre application de console. Pour être plus précis, la pièce qui s'exécute au-dessus de IIS ou HTTP.SYS est Katana qui est une implémentation de la spécification OWIN.

En appelant app.UseWebApi vous configurez OWIN/Katana pour envoyer des requêtes Web via ASP.NET Web Api qui, dans la terminologie OWIN, est considéré comme un middleware. Cela nécessite le package NuGet Microsoft.AspNet.WebApi.Owin .

Fait intéressant, ASP.NET MVC 5 ne peut pas être configuré en tant que middleware OWIN/Katana. ça dépend de System.Web et s'attend à ce que le singleton HttpContext existe, il doit donc s'exécuter au-dessus d'IIS. Cependant, plusieurs packages NuGet qui peuvent être utilisés dans des projets MVC (par exemple pour l'authentification) sont construits sur OWIN au lieu de prendre une dépendance sur HttpContext ce qui les rend plus utiles. C'est une des raisons pour lesquelles vous voyez OWIN utilisé dans un projet MVC.

41
Martin Liversage

Vous devez installer Microsoft ASP.NET Web API2 OWIN Self Host qui résoudra le problème.

Vous pouvez utiliser la commande NuGet suivante illustrée ci-dessous:

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
5
Alexander Svetly