Visual studio 2015 ASP.NET核心是否仍使用OWIN?

Visual studio 2015 ASP.NET核心是否仍使用OWIN?,visual-studio-2015,asp.net-core,owin,.net-core,obsolete,Visual Studio 2015,Asp.net Core,Owin,.net Core,Obsolete,我注意到,当使用C#构建一个较旧的MVC项目时,有很多对OWIN库的引用。但在VS2015 SP3中创建.NET核心web应用程序时,似乎没有提及它 这个图书馆过时了吗?OWIN不是一个图书馆,它是一个图书馆。从文件来看 OWIN定义了.NET web服务器和web应用程序之间的标准接口 OWIN的“大想法”是,如果每个人都同意使用一个通用接口,那么您可以将应用程序与它们运行的服务器分离。实际上,与OWIN兼容的服务器可以运行任何与OWIN兼容的应用程序。这是对过去紧密耦合的改进(应用程序只能在

我注意到,当使用C#构建一个较旧的MVC项目时,有很多对OWIN库的引用。但在VS2015 SP3中创建.NET核心web应用程序时,似乎没有提及它


这个图书馆过时了吗?

OWIN不是一个图书馆,它是一个图书馆。从文件来看

OWIN定义了.NET web服务器和web应用程序之间的标准接口

OWIN的“大想法”是,如果每个人都同意使用一个通用接口,那么您可以将应用程序与它们运行的服务器分离。实际上,与OWIN兼容的服务器可以运行任何与OWIN兼容的应用程序。这是对过去紧密耦合的改进(应用程序只能在IIS上运行,仅此而已)

OWIN规范中有很多专门描述各种属性的名称。与OWIN兼容的服务器将传入的请求转换为
字典
,其中包含一组键,如
OWIN.RequestBody
OWIN.ResponseBody
。如果请求传递到的应用程序或中间件知道如何读取这些密钥,那么它可以处理请求。就这样

OWIN库(如和)是一个常见的混淆源。这些库只是OWIN接口的类型安全实现,或帮助程序,使其更容易与OWIN兼容的组件交互

正如@Murray和@Tseng所指出的,ASP.NET核心不是基于OWIN构建的,而是与OWIN兼容的。或者,更确切地说,ASP.NET核心运行的服务器(Kestrel、WebListener、IIS)与OWIN兼容。ASP.NET核心是对低级请求(OWIN级别)的进一步抽象,它使构建控制器和服务器呈现页面等变得容易

由于ASP.NET内核与OWIN兼容,因此很容易插入任何与OWIN兼容的中间件。
Microsoft.AspNetCore.Owin
包公开了一个
UseOwin
方法:

app.UseOwin(pipeline =>
{
    pipeline(next => OwinHello);
    // where  OwinHello is a compatible middleware function
});

有关将OWIN中间件添加到ASP.NET核心管道的更多示例,请参阅。

是的,OWIN仍然是受支持的主要标准。Net core提供了构建web应用程序的基本要素。从Nuget获取OWIN包@默里·福克斯·克罗夫特:不完全正确。NET核心和ASP.NET核心不基于OWIN。但是他们支持插入OWIN中间件。@Tseng,的确,这就是我说支持的原因。可以从ASP.NET Core访问OWIN环境字典吗?@Fred Yes,通过
HttpContext.Items
属性。但是
HttpContext.Items
是一个
字典
,而OWIN环境字典是一个
字典
。另外,
HttpContext.Items
为空,因此,虽然它可以用于在中间件之间共享数据,但它不包含原始OWIN环境。