2016-07-11 4 views
17

Ich habe kürzlich an einer MVC-Site, die eine API hat und in der Startup.cs gibt es eine Zeile, die app.UseWebApi sagt. Ich habe ein wenig gesucht, aber ich konnte keine vernünftige Antwort finden. Kann mir bitte jemand das Konzept erklären? Vielen Dank!Was macht IAppbuilder.UseWebApi?

Antwort

28

Es konfiguriert ASP.NET-Web-API, um auf OWIN zu laufen. OWIN abstrahiert einen Webserver und Sie können ihn sowohl auf IIS als auch auf HTTP.SYS ausführen, wodurch Sie einen Webserver in Ihrer eigenen Konsolenanwendung bereitstellen können. Um genauer zu sein, ist das Stück, das auf IIS oder HTTP.SYS läuft, Katana, was eine Implementierung der OWIN-Spezifikation ist.

Durch Aufruf von app.UseWebApi konfigurieren Sie OWIN/Katana, um Webanforderungen über ASP.NET Web Api zu senden, die in der OWIN-Terminologie als Middleware gelten. Dies erfordert das NuGet-Paket Microsoft.AspNet.WebApi.Owin.

Interessanterweise kann ASP.NET MVC 5 nicht als OWIN/Katana Middleware konfiguriert werden. Es hängt von System.Web ab und erwartet, dass der Singleton HttpContext existiert, so dass er auf IIS ausgeführt werden muss. Einige NuGet-Pakete, die in MVC-Projekten verwendet werden können (z. B. zur Authentifizierung), werden jedoch auf OWIN aufgebaut, anstatt eine Abhängigkeit von HttpContext zu nehmen, die sie nützlicher macht. Das ist eine Erklärung dafür, warum OWIN in einem MVC-Projekt verwendet wird.