本文中将使用 mvc5与webapi2进行对Autofac整合

准备工作:

  1、vs2013 or vs2013+

  2、网络良好,nuget正常访问

好了需要的准备工作就这么多。

-----------------------------分割线---------------------------------------

1、首先新建一个mvc5 与 webapi2 的项目如下图

2、安装相应的插件:

   <package id="Autofac" version="3.5.0" targetFramework="net46" />
<package id="Autofac.Configuration" version="3.3.0" targetFramework="net46" />
<package id="Autofac.Mvc5" version="3.3.4" targetFramework="net46" />
<package id="Autofac.Mvc5.Owin" version="3.1.0" targetFramework="net46" />
<package id="Autofac.Owin" version="3.1.0" targetFramework="net46" />
<package id="Autofac.WebApi2" version="3.4.0" targetFramework="net46" />
<package id="Autofac.WebApi2.Owin" version="3.3.0" targetFramework="net46" />

ps:请参考id进行进行安装

3、在Startup文件中配置 Autofac(ps:看下面代码 有很多可选配置 应为我没有用到就注释了。例如builder.RegisterModelBinders(Assembly.GetExecutingAssembly())  因为我没有自定义ModelBinders 就启用)

 public partial class Startup
{
public void Configuration(IAppBuilder app)
{
//ConfigureAuth(app);
var builder = new ContainerBuilder();
// Register dependencies, then...
IOCRegister.Init(builder); // Register your MVC controllers.
builder.RegisterControllers(typeof(MvcApplication).Assembly);
// OPTIONAL: Register model binders that require DI.
//builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
//builder.RegisterModelBinderProvider(); // OPTIONAL: Register web abstractions like HttpContextBase.
//builder.RegisterModule<AutofacWebTypesModule>(); // OPTIONAL: Enable property injection in view pages.
//builder.RegisterSource(new ViewRegistrationSource()); // OPTIONAL: Enable property injection into action filters.
builder.RegisterFilterProvider();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
var config = GlobalConfiguration.Configuration;
// Set the dependency resolver to be Autofac.
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
app.UseAutofacMiddleware(container);
app.UseAutofacMvc();
app.UseAutofacWebApi(config);
}
}
 1 public class IOCRegister
{
public static void Init(ContainerBuilder builder)
{
XmlConfigurator.Configure(new FileInfo(Path.Combine(HttpContext.Current.Server.MapPath("/"), "log4net.config")));
var logger = LogManager.GetLogger("");
builder.RegisterInstance(logger).As<ILog>().SingleInstance(); var configPath = Path.Combine(HttpContext.Current.Server.MapPath("/"), @"App_Data/Config"); builder.RegisterModule(new ConfigurationSettingsReader("components", Path.Combine(configPath, "components.xml")));
//更多配置文件..... }
}

ps:以上代码使用配置文件的方法配置 注入实例

4、配置文件components.xml

 <?xml version="1.0" encoding="utf-8" ?>
<components defaultAssembly="BA.Framework.Util">
<files>
<file name="App_Data/Config/services.xml" section="services" />
</files>
</components>

5、配置文件 services.xml

 <?xml version="1.0" encoding="utf-8" ?>
<service defaultAssembly="WebApplication1Service">
<components>
<component
type="WebApplication1Service.TestService"
service="WebApplication1Service.ITestService"
instance-scope="per-lifetime-scope">
<parameters>
<parameter name="name" value="adfasdfasdfasdfasdf" />
<parameter name="age" value="121"/>
</parameters>
</component> </components>
</service>

ps: 注意 defaultAssembly 需要配置注入类的命名空间

最后:关于TestService.cs

  public interface ITestService
{
string Test(); TestModel GetInfo(); } public class TestService : ITestService
{ private readonly string name;
private readonly int age; public TestService(string name, int age)
{
this.name = name;
this.age = age;
}
public int Count { set; get; } public string Test()
{
return "afdafdasdf";
} public TestModel GetInfo()
{
return new TestModel()
{
Age = age,
Name = name
};
}
} public class TestModel
{
public string Name { get; set; }
public int Age { set; get; }
}

Controller里使用Service:

 public class Home2Controller : ApiController
{
private readonly ITestService _testService;
public Home2Controller(ITestService testService)
{
_testService = testService;
}
public TestModel Get()
{
return _testService.GetInfo();
}
}

mvc5整合Autofac的更多相关文章

  1. NET Core 整合Autofac和Castle

    NET Core 整合Autofac和Castle 阅读目录 前言: 1.ASP.NET Core中的Autofac 2.整合Castle的DynamicProxy 3.注意事项 回到目录 前言: 除 ...

  2. 06、NetCore2.0依赖注入(DI)之整合Autofac

    06.NetCore2.0依赖注入(DI)之整合Autofac 除了使用NetCore2.0系统的依赖注入(DI)框架外,我们还可以使用其他成熟的DI框架,如Autofac.Unity等.只要他们支持 ...

  3. 最近的项目系之2——core3.0整合Autofac

    1.前言 core3.0与之前版本相比,有一些brokenchanges,那周边一些配套组件往往也难逃brokenchanges,Autofac也不例外.这里重点关注core整合Autofac,与之前 ...

  4. ASP.NET Core 整合Autofac和Castle实现自动AOP拦截

    前言: 除了ASP.NETCore自带的IOC容器外,我们还可以使用其他成熟的DI框架,如Autofac,StructureMap等(笔者只用过Unity,Ninject和Castle). 1.ASP ...

  5. Ioc容器Autofac系列(2)-- asp.net mvc中整合autofac

    经过上篇蜻蜓点水的介绍后,本篇通过实例快速上手autofac,展示当asp.net mvc引入了autofac之后会带来什么. 创建Asp.net MVC并引入Autofac 首先,创建一个MVC站点 ...

  6. Asp.net mvc中整合autofac

    创建Asp.net MVC并引入Autofac 首先,创建一个MVC站点,为方便起见,选初始带HomeController和AccountController的那种.然后通过NuGet或到Autofa ...

  7. .NET MVC5+ EF+AutoFac自动注入框架

    1.创建一个MVC系统 VIEW显示页面代码: <link href="~/Content/bootstrap.css" rel="stylesheet" ...

  8. mvc5 + ef6 + autofac搭建项目(四).1视屏上传生成截图

    即上一篇中上传涉及到的 一个视频生成截图的问题,这个很简单,这是上一篇中的代码片段 #region 视频上传,生成默认展示图片(自动剪切) try { string fileSavePath = Da ...

  9. mvc5 + ef6 + autofac搭建项目(四)

    在列表页面,点击新增,弹出窗口实现视屏上传,这里存在一个问题,就是大文件上传的问题,iis出于安全问题,有限制,当然这不是大问题,解决也很容易: 见截图: 请忽略视屏文件,看得懂的请装作不懂. 源码 ...

随机推荐

  1. tomcat的环境配置

    针对java8 选择tomcat进行配置 Tomcat 环境变量配置: 下载:http://tomcat.apache.org/download-80.cgi 解压后直接copy到C盘,这是免安装版本 ...

  2. 软件工程中的反面模式(anti-pattern)

    软件设计 抽象倒置(Abstraction inversion):不把用户需要的功能直接提供出来,导致他们要用更上层的函数来重复实现 用意不明(Ambiguous viewpoint):给出一个模型( ...

  3. [BZOJ 2964] Boss单挑战

    Link:https://www.lydsy.com/JudgeOnline/problem.php?id=2964 Algorithm: 一道很新颖的背包问题 此题每个状态要维护的量巨多,而转移方式 ...

  4. 【基数排序】bzoj1901 Zju2112 Dynamic Rankings

    论NOIP级别的n²算法…… 跟分块比起来,理论上十万的数据只慢4.5倍左右的样子…… #include<cstdio> #include<algorithm> using n ...

  5. 【R笔记】R语言中的字符串处理函数

    内容概览 尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串同样极为重要.从医疗研究数据里的出生日期到文本挖掘的应用,字符串数据在R程序中使用的频率非常高.R语言提供了很多字符串操作函数,本文仅简 ...

  6. CentOS查看主板型号、CPU、显卡、硬盘等信息

    系统 uname -a # 查看内核/操作系统/CPU信息 head -n 1 /etc/issue # 查看操作系统版本 cat /proc/cpuinfo # 查看CPU信息 hostname # ...

  7. Jenkins持续集成实战总结

    原文:https://my.oschina.net/CandyDesire/blog/341331#comment-list 持续集成 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何 ...

  8. 【mybatis】mybatis中insert 主键自增和不自增的插入情况【mysql】

    主键不自增:返回值是插入的条数 <insert id="add" parameterType="EStudent"> insert into TSt ...

  9. Javascript高级程序设计 -- 第三章 -- 总结

    1.Javascript有几种数据类型 2.变量 Javascript有几种数据类型 JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Nu ...

  10. cs-SelectTree-DropTreeNode, SelectTreeList

    ylbtech-Unitity: cs-SelectTree-DropTreeNode, SelectTreeList DropTreeNode.cs SelectTreeList.cs 1.A,效果 ...