web-dev-qa-db-ja.com

IAppbuilder.UseWebApiは何をしますか?

私は最近、apiを持つMVCサイトで作業しており、startup.csにapp.UseWebApi。私はいくつかの検索を行いましたが、それが何をするのかについてまともな答えを見つけることができませんでした。誰かが私のために概念を説明してもらえますか?ありがとう!

30
David Carek

[〜#〜] owin [〜#〜] の上で実行されるようにASP.NET Web APIを構成します。 OWINはWebサーバーを抽象化し、IISとHTTP.SYSの両方の上で実行できます。HTTP.SYSを使用すると、独自のコンソールアプリケーションでWebサーバーを提供できます。 IISまたはHTTP.SYSが Katana の上で実行されます。これはOWIN仕様の実装です。

app.UseWebApiを呼び出すことにより、OWIN/Katanaを構成して、OWIN用語ではミドルウェアと見なされるASP.NET Web Apiを介してWeb要求を送信します。これにはNuGetパッケージ Microsoft.AspNet.WebApi.Owin が必要です。

興味深いことに、ASP.NET MVC 5はOWIN/Katanaミドルウェアとして構成できません。 System.Webに依存し、HttpContextシングルトンが存在することを想定しているため、IIS上で実行する必要があります。ただし、MVCプロジェクト(認証など)で使用できるいくつかのNuGetパッケージは、HttpContextに依存するのではなく、OWINの上に構築されているため、便利です。これが、MVCプロジェクトでOWINが使用されている理由の1つの説明です。

41

この問題を解決するには、Microsoft ASP.NET Web API2 OWIN Self Hostをインストールする必要があります。

以下に示す次のNuGetコマンドを使用できます。

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
5