本文中将使用 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. HDU 2551 竹青遍野(循环,水)

    /* 他开始在他的院子种竹子,第1个月种1根竹子,第2个月种8根竹子,第3个月种27根竹子 ...第N个月就种(N^3)根竹子.当他种下第X根竹子那一刻,就是他重出江湖之时! 告诉你X的值, 你能算出 ...

  2. MySQL逻辑架构简介

    1.Connectors指的是不同语言中与SQL的交互2 Management Serveices & Utilities: 系统管理和控制工具3 Connection Pool: 连接池管理 ...

  3. P2819 图的m着色问题

    题目背景 给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色.如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的.图的m着色问题是对于给定图G和m ...

  4. 【贪心】Gym - 100507H - Pair: normal and paranormal

    每次取相邻的两个可以射击的从序列中删除,重复n次. 可以看作括号序列的匹配. #include<cstdio> #include<vector> using namespace ...

  5. 【手动开栈】【dfs序】【树状数组】【Tarjan】bzoj2819 Nim

    考虑树状数组区间修改(只对其子树的答案有影响)点查询,每个点记录的是它到根路径上的权值异或和. 答案时query(L)^query(R)^a[lca]. 这种方法在支持区间加法.减法的树上询问的时候可 ...

  6. cookie的secure、httponly属性设置

    cookie的secure.httponly属性设置 转载自:http://www.cnblogs.com/alanzyy/archive/2011/10/14/2212484.html 一.属性说明 ...

  7. jquery--动态篇

    jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的st ...

  8. 使用Spring Boot集成FastDFS

    原文:http://www.cnblogs.com/ityouknow/p/8298358.html#3893468 上篇文章介绍了如何使用Spring Boot上传文件,这篇文章我们介绍如何使用Sp ...

  9. Go 测试单个方法/性能测试

    Go 测试单个方法 gotest.go package mytest import ( "errors" ) func Division(a, b float64) (float6 ...

  10. javascript快速入门5--数组与对象

    数组 数组,实际上就是将一大堆相似的数据有秩序的放在格子箱中,十分像药房里的那些柜子. 数据1 数据2 数据3 数据4 数据5 数据6 用代码创建数组 var arr = new Array();// ...