最近我在开发一个带有API的MVC站点,在startup.cs文件里面有一行代码是
app.UseWebApi
。我尝试搜索了一下,但没有找到一个合适的答案来解释它具体是做什么用的。请问可以有人为我解释一下吗?谢谢!app.UseWebApi
。我尝试搜索了一下,但没有找到一个合适的答案来解释它具体是做什么用的。请问可以有人为我解释一下吗?谢谢!它配置了ASP.NET Web API在OWIN之上运行。 OWIN抽象了一个Web服务器,您可以在IIS和HTTP.SYS之上运行它,这使您可以在自己的控制台应用程序中提供Web服务器。更具体地说,运行在IIS或HTTP.SYS之上的部分是Katana,它是OWIN规范的实现。
通过调用app.UseWebApi
,您可以配置OWIN / Katana通过ASP.NET Web Api发送Web请求,这在OWIN术语中被认为是中间件。这需要安装NuGet包Microsoft.AspNet.WebApi.Owin。
有趣的是,ASP.NET MVC 5无法配置为OWIN / Katana中间件。它依赖于System.Web
,并期望存在HttpContext
单例,因此必须在IIS之上运行。但是,许多可以在MVC项目中使用的NuGet包(例如用于身份验证)是基于OWIN构建的,而不是依赖于HttpContext
,这使它们更有用。这就是为什么您会看到OWIN在MVC项目中使用的一个解释。
Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
app.UserWebApi
不会执行Web服务器。它配置Web服务器(可以是IIS或您自己的主机)通过ASP.NET Web API(这是一个库)发送HTTP请求。您可以阅读Project Katana概述了解OWIN和Katana的概述。 - Martin Liversage