IAppbuilder.UseWebApi做了什么?

时间:2016-07-11 14:00:43

标签: c# asp.net-mvc api

我最近一直在创建一个有api的MVC站点,在startup.cs中有一行显示def foo(x): global a a = x*2 。我做了一些搜索,但我找不到一个体面的答案。有人可以帮我解释一下这个概念吗?谢谢!

2 个答案:

答案 0 :(得分:41)

它将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,这使得它们更有用。这就是为什么你看到在MVC项目中使用OWIN的原因。

答案 1 :(得分:3)

您需要安装Microsoft ASP.NET Web API2 OWIN Self Host,它将解决此问题。

您可以使用下面显示的以下NuGet命令:

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost