据我所知,Microsoft.Owin.Host.SystemWeb允许我在IIS上运行OWIN应用程序,但今天我发现了另一个名为Microsoft.Owin.Host.IIS的程序包(据我所知,它的名称)具有类似的用途。< / p>
实际上我认为我错了,包装非常不同。
所以,问题在这里:
答案 0 :(得分:4)
回答您的可选问题:
System.Web
的问题在于它过于臃肿并与IIS结合在一起。例如,您无法在控制台窗口中托管MVC网站。您被迫在IIS中运行它。 OWIN计划试图通过添加抽象来模块化和解耦Web Stack。
本质上,整个Web Stack被简化为中间件组件的管道(类似于node.js的工作方式)。中间件组件或AppFunc
(Func<IDictionary<string, object>,Task>
)是一个获取上下文(包含请求,响应和其他东西......)并对其执行某些操作的函数(请求解析,路由,呈现视图,记录东西,...)。然后整个堆栈成为一系列中间件组件:每个组件调用链中的下一个组件,或者通过不调用下一个组件来中断执行。
ASP.NET 5是一种自然演化,它建立在OWIN之上,因此可以实现模块化并消除对System.Web(和IIS)的依赖。现在一切都是选择加入,您甚至可以跨平台运行应用程序(使用.NET Core)。没有OWIN,这是不可能的。
答案 1 :(得分:2)
Microsoft创建新平台/框架/功能比记录它们更快
MVC 6,Katana(OWIN)和ASP.NET 6的并发开发并没有真正帮助清除所有这些内容之间的混淆。
据我所知:
Microsoft.Owin.Host.IIS
命名空间,程序集和程序包适用于Helios, introduced in this blog post。基本上它意味着在IIS中运行没有ASP.NET的托管代码 - 在此基础上提供您自己的OWIN中间件。
所以你似乎需要Microsoft.Owin.Host.SystemWeb
来达到你的目的。这形成了一个OWIN主机,允许您的中间件使用System.Web
。