IAppbuilder.UseWebApi是什么意思?

38
最近我在开发一个带有API的MVC站点,在startup.cs文件里面有一行代码是app.UseWebApi。我尝试搜索了一下,但没有找到一个合适的答案来解释它具体是做什么用的。请问可以有人为我解释一下吗?谢谢!
2个回答

53

它配置了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项目中使用的一个解释。


谢谢您的解释。这个单一的调用是否会启动并监听服务器? - Balaji Boggaram Ramanarayan
1
@BalajiBoggaramRamanarayan:我不认为我理解你的问题。调用app.UserWebApi不会执行Web服务器。它配置Web服务器(可以是IIS或您自己的主机)通过ASP.NET Web API(这是一个库)发送HTTP请求。您可以阅读Project Katana概述了解OWIN和Katana的概述。 - Martin Liversage

10
您需要安装Microsoft ASP.NET Web API2 OWIN Self Host来解决此问题。
您可以使用下面显示的NuGet命令:
Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

4
这个回答不是针对提问者的问题,而是回答了我的问题:我需要做什么才能获得方法appBuilder.UseWebApi()? - Super Jade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接