mvc5整合Autofac
本文中将使用 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的更多相关文章
- NET Core 整合Autofac和Castle
NET Core 整合Autofac和Castle 阅读目录 前言: 1.ASP.NET Core中的Autofac 2.整合Castle的DynamicProxy 3.注意事项 回到目录 前言: 除 ...
- 06、NetCore2.0依赖注入(DI)之整合Autofac
06.NetCore2.0依赖注入(DI)之整合Autofac 除了使用NetCore2.0系统的依赖注入(DI)框架外,我们还可以使用其他成熟的DI框架,如Autofac.Unity等.只要他们支持 ...
- 最近的项目系之2——core3.0整合Autofac
1.前言 core3.0与之前版本相比,有一些brokenchanges,那周边一些配套组件往往也难逃brokenchanges,Autofac也不例外.这里重点关注core整合Autofac,与之前 ...
- ASP.NET Core 整合Autofac和Castle实现自动AOP拦截
前言: 除了ASP.NETCore自带的IOC容器外,我们还可以使用其他成熟的DI框架,如Autofac,StructureMap等(笔者只用过Unity,Ninject和Castle). 1.ASP ...
- Ioc容器Autofac系列(2)-- asp.net mvc中整合autofac
经过上篇蜻蜓点水的介绍后,本篇通过实例快速上手autofac,展示当asp.net mvc引入了autofac之后会带来什么. 创建Asp.net MVC并引入Autofac 首先,创建一个MVC站点 ...
- Asp.net mvc中整合autofac
创建Asp.net MVC并引入Autofac 首先,创建一个MVC站点,为方便起见,选初始带HomeController和AccountController的那种.然后通过NuGet或到Autofa ...
- .NET MVC5+ EF+AutoFac自动注入框架
1.创建一个MVC系统 VIEW显示页面代码: <link href="~/Content/bootstrap.css" rel="stylesheet" ...
- mvc5 + ef6 + autofac搭建项目(四).1视屏上传生成截图
即上一篇中上传涉及到的 一个视频生成截图的问题,这个很简单,这是上一篇中的代码片段 #region 视频上传,生成默认展示图片(自动剪切) try { string fileSavePath = Da ...
- mvc5 + ef6 + autofac搭建项目(四)
在列表页面,点击新增,弹出窗口实现视屏上传,这里存在一个问题,就是大文件上传的问题,iis出于安全问题,有限制,当然这不是大问题,解决也很容易: 见截图: 请忽略视屏文件,看得懂的请装作不懂. 源码 ...
随机推荐
- HDU 2551 竹青遍野(循环,水)
/* 他开始在他的院子种竹子,第1个月种1根竹子,第2个月种8根竹子,第3个月种27根竹子 ...第N个月就种(N^3)根竹子.当他种下第X根竹子那一刻,就是他重出江湖之时! 告诉你X的值, 你能算出 ...
- MySQL逻辑架构简介
1.Connectors指的是不同语言中与SQL的交互2 Management Serveices & Utilities: 系统管理和控制工具3 Connection Pool: 连接池管理 ...
- P2819 图的m着色问题
题目背景 给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色.如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的.图的m着色问题是对于给定图G和m ...
- 【贪心】Gym - 100507H - Pair: normal and paranormal
每次取相邻的两个可以射击的从序列中删除,重复n次. 可以看作括号序列的匹配. #include<cstdio> #include<vector> using namespace ...
- 【手动开栈】【dfs序】【树状数组】【Tarjan】bzoj2819 Nim
考虑树状数组区间修改(只对其子树的答案有影响)点查询,每个点记录的是它到根路径上的权值异或和. 答案时query(L)^query(R)^a[lca]. 这种方法在支持区间加法.减法的树上询问的时候可 ...
- cookie的secure、httponly属性设置
cookie的secure.httponly属性设置 转载自:http://www.cnblogs.com/alanzyy/archive/2011/10/14/2212484.html 一.属性说明 ...
- jquery--动态篇
jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的st ...
- 使用Spring Boot集成FastDFS
原文:http://www.cnblogs.com/ityouknow/p/8298358.html#3893468 上篇文章介绍了如何使用Spring Boot上传文件,这篇文章我们介绍如何使用Sp ...
- Go 测试单个方法/性能测试
Go 测试单个方法 gotest.go package mytest import ( "errors" ) func Division(a, b float64) (float6 ...
- javascript快速入门5--数组与对象
数组 数组,实际上就是将一大堆相似的数据有秩序的放在格子箱中,十分像药房里的那些柜子. 数据1 数据2 数据3 数据4 数据5 数据6 用代码创建数组 var arr = new Array();// ...