我最近一直在创建一个有api的MVC站点,在startup.cs中有一行显示def foo(x):
global a
a = x*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