Autofac与WebApi集成

目录

 

Autofac原理

如何将Autofac与Web API集成?

Autofac功能详解

1.HttpConfiguration

2.控制器

3.解析器

4.过滤器

1.注册过滤器提供程序

2.实现过滤器接口

3.注册过滤器

4.过滤器覆盖

5为什么我们使用非标准的过滤器接口

6.标准Web API筛选器属性是单例

7实例过滤器不会被注入

5.模型绑定器

1.注册绑定器提供程序

2注册模型绑定器

3使用ModelBinderAttribute标记参数


Autofac原理

寻找到相关实例,将其赋给接口对象。比如说,我们在调用方使用了一堆接口,然后引用了一个DLL,这个DLL包含了实现这些接口的实例,那么Autofac就自动从这个DLL中提取出这些实例,赋给接口对象。这一切都是Autofac自动完成的。

如何将Autofac与Web API集成?

1需要引用Web API集成NuGet包

2修改Global.axax文件

  1. 注册您的控制器并设置依赖关系解析器。
  2. 也可以选择启用其他功能。

 

如下:

protected void Application_Start()
{
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
                       

            //扫描特定名称的程序集并一次性注册控制器
            var assemblies = BuildManager.GetReferencedAssemblies()
                .Cast<Assembly>()
                .Where(r => r.FullName.StartsWith("CsdnNet."))
                .ToArray();

            var builder = new ContainerBuilder();
            //得到你的HttpConfiguration.
            var config = GlobalConfiguration.Configuration;


            builder.RegisterAssemblyModules(assemblies);
            //注册您的Web API控制器.
            builder.RegisterApiControllersAndInterface(assemblies);
            builder.RegisterConsumes(assemblies);
            builder.RegisterRemotingService(assemblies);
            builder.RegisterCrossService(assemblies);
            builder.RegisterDao(assemblies);
            builder.RegisterHotelBaseAutofacFilter();
            //可选:注册Autofac过滤器、筛选器提供程序.
            builder.RegisterWebApiFilterProvider(config);
            //可选:注册Autofac模型绑定器提供程序
            builder.RegisterWebApiModelBinderProvider();

            //将依赖关系解析器设置为Autofac。
            var container = builder.Build();//容器
            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);//让Web API知道它应该使用AutofacWebApiDependencyResolver(解析器)找到服务
            
            var csl = new AutofacServiceLocator(container);
            ServiceLocator.SetLocatorProvider(() => csl);
}

 

其中,Autofac为我们提供了HttpConfiguration 、控制器、解析器、过滤器、模型绑定器…

Autofac功能详解

***以下内容摘自:https://blog.csdn.net/WuLex/article/details/78808541

1.HttpConfiguration

在Web API中,设置应用程序需要您更新HttpConfiguration对象的属性并设置值。 根据您的应用程序托管方式,您获得此配置的方式可能有所不同。

 

1.对于标准的IIS托管,HttpConfigurationGlobalConfiguration.Configuration

  1. var builder = new ContainerBuilder();  
  2. var config = GlobalConfiguration.Configuration;  
  3. builder.RegisterApiControllers(Assembly.GetExecutingAssembly());  
  4. var container = builder.Build();  
  5. config.DependencyResolver = new AutofacWebApiDependencyResolver(container);  

 

2.对于自托管,HttpConfiguration是您的HttpSelfHostConfiguration实例

  1. var builder = new ContainerBuilder();  
  2. var config = new HttpSelfHostConfiguration("http://localhost:8080");  
  3. builder.RegisterApiControllers(Assembly.GetExecutingAssembly());  
  4. var container = builder.Build();  
  5. config.DependencyResolver = new AutofacWebApiDependencyResolver(container);  

 

对于OWIN集成,HttpConfiguration是您在应用程序启动类中创建并传递给Web API中间件的一个。

  1. var builder = new ContainerBuilder();  
  2. var config = new HttpConfiguration();  
  3. builder.RegisterApiControllers(Assembly.GetExecutingAssembly());  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值