Autofac官方文档(二十一)【应用集成之OWIN】

OWIN全称Open Web Interface for .NET(.NET的开放式Web接口),是一种更简单的模型,用于(在不将应用程序绑定到Web服务器的情况下)编写基于Web的应用程序。为此,使用“中间件”的概念来创建请求所经过的管道。

由于OWIN处理应用程序管道(检测请求何时开始/结束等)的方式的差异,将Autofac集成到OWIN应用程序中与将其集成到更多“标准”ASP.NET应用程序的方式略有不同。你可以阅读关于OWIN以及它如何在这个概述上工作

重要的是要记住的是,OWIN中间件注册的顺序很重要。中间件按照注册的顺序进行处理,就像一个链,所以你需要首先注册基础性的东西(比如Autofac中间件)。

快速开始

在您的OWIN管道中利用Autofac:

  • 参考NuGet的Autofac.Owin包。

  • 建立你的Autofac容器。

  • 用OWIN注册Autofac中间件并将其传递给容器。

public class Startup
{
  public void Configuration(IAppBuilder app)
  {
    var builder = new ContainerBuilder();
    // 注册依赖关系,然后...
    var container = builder.Build();

    //首先注册Autofac中间件。 这也增加了在容器中注册的Autofac注入中间件。
    app.UseAutofacMiddleware(container);

    //然后注册您的其他中间件(未注册到Autofac)。
  }
}

查看各个ASP.NET集成库页面,了解不同应用程序类型的具体细节以及它们如何处理OWIN支持。

中间件中的依赖注入

通常,当您向应用程序注册OWIN中间件时,可以使用中间件附带的扩展方法。 例如Web API有app.UseWebApi(config);扩展方法。 以这种方式注册的中间件是静态定义的,不会注入依赖关系。

对于自定义中间件,您可以允许Autofac通过向应用程序容器注册依赖关系来注入依赖关系,而不是使用静态扩展注册。

var builder = new ContainerBuilder();
builder.RegisterType<MyCustomMiddleware>();

var container = builder.Build();

//这将添加Autofac中间件以及容器中注册的中间件.
app.UseAutofacMiddleware(container);

当你调用app.UseAutofacMiddleware(container); Autofac中间件本身将被添加到管道中,之后在容器中注册的任何Microsoft.Owin.OwinMiddleware类也将被添加到管道中。

以这种方式注册的中间件将根据(经过OWIN管道的每个请求的)请求生命周期范围解析。

控制中间件的顺序

对于一个简单的场景,app.UseAutofacMiddleware(container); 将同时处理向OWIN请求范围添加Autofac生命周期以及向Autofac中注册添加到Autofac中的中间件。

如果您希望在将启用了DI的中间件添加到管道时进行更多的控制,则可以使用UseAutofacLifetimeScopeInjectorUseMiddlewareFromContainer扩展。

var builder = new ContainerBuilder();
builder.RegisterType<MyCustomMiddleware>();

var container = builder.Build();

//这只会将Autofac生命周期范围添加到管道中
app.UseAutofacLifetimeScopeInjector(container);

//现在,您可以将容器中的中间件添加到任何你喜欢的管道中。例如,这会在Web API中间件/处理之后添加自定义启用了DI的中间件。
app.UseWebApi(config);
app.UseMiddlewareFromContainer<MyCustomMiddleware>();

示例:

有一个示例项目显示Web API与Autofac示例资源库中的OWIN自托管一起使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值