Asp.net WebAPI Ioc
网上关于webapi Ioc 的东西很多,如http://efmvc.codeplex.com/SourceControl/latest#MyFinance.Web/Global.asax.cs 这是用微软IUnityContainer。还有:
但是网上关于Autofac 确是很少, 我第一次接触也是单元测试的时候 ASP.NET Web API Unit Testing
这里就简单贴点code吧:
public class Startup
{
public void Configuration(Owin.IAppBuilder appBuilder)
{
var config = new HttpConfiguration();
config.MessageHandlers.Add(new HeaderAppenderHandler());
config.MessageHandlers.Add(new EndRequestHandler());
config.Filters.Add(new ArticlesReversedFilter());
config.Services.Replace(typeof(IAssembliesResolver), new CustomAssembliesResolver()); config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.MapHttpAttributeRoutes(); // Autofac configuration
var builder = new ContainerBuilder();
builder.RegisterApiControllers(typeof(ArticlesController).Assembly);
//builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
// .Where(t =>!t.IsAbstract && typeof(ApiController).IsAssignableFrom(t));
// Unit of Work
var _unitOfWork = new Mock<IUnitOfWork>();
builder.RegisterInstance(_unitOfWork.Object).As<IUnitOfWork>(); //Repositories
var _articlesRepository = new Mock<IArticleRepository>();
_articlesRepository.Setup(x => x.GetAll()).Returns(
BloggerInitializer.GetAllArticles()
);
builder.RegisterInstance(_articlesRepository.Object).As<IArticleRepository>(); var _blogsRepository = new Mock<IBlogRepository>();
_blogsRepository.Setup(x => x.GetAll()).Returns(
BloggerInitializer.GetBlogs
);
builder.RegisterInstance(_blogsRepository.Object).As<IBlogRepository>(); // Services
builder.RegisterAssemblyTypes(typeof(ArticleService).Assembly)
.Where(t => t.Name.EndsWith("Service"))
.AsImplementedInterfaces().InstancePerRequest(); builder.RegisterInstance(new ArticleService(_articlesRepository.Object, _unitOfWork.Object));
builder.RegisterInstance(new BlogService(_blogsRepository.Object, _unitOfWork.Object)); IContainer container = builder.Build();
config.DependencyResolver = new AutofacWebApiDependencyResolver(container); appBuilder.UseWebApi(config);
}
}
我这里是单元测试, 所以安装包如下:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.1.3" targetFramework="net45" />
<package id="Autofac" version="3.5.0" targetFramework="net45" />
<package id="Autofac.WebApi2" version="3.4.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Owin" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.SelfHost" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net45" />
<package id="Microsoft.Owin.Host.HttpListener" version="3.0.1" targetFramework="net46" />
<package id="Microsoft.Owin.Hosting" version="3.0.1" targetFramework="net46" />
<package id="Owin" version="1.0" targetFramework="net45" />
<package id="Moq" version="4.2.1510.2205" targetFramework="net45" />
<package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
<package id="NUnit" version="3.2.0" targetFramework="net45" />
<package id="NUnitTestAdapter" version="2.0.0" targetFramework="net45" /> </packages>
测试的时候建议使用 TestDriven.NET
Asp.net WebAPI Ioc的更多相关文章
- ASP.NET WebAPI 08 Message,HttpConfiguration,DependencyResolver
ASP.NET WebAPI 08 Message,HttpConfiguration,DependencyResolver Message WebAPI作为通信架构必定包含包含请求与响应两个方法 ...
- Asp.net WebApi + EF 单元测试架构 DbContext一站到底
其实关于webapi和Ef service的单元测试我以前已经写过相关文章,大家可以参考: Asp.net WebAPI 单元测试 单元测试 mock EF 中DbContext 和DbSet Inc ...
- Asp.net WebAPI 单元测试
现在Asp.net webapi 运用的越来越多,其单元而是也越来越重要.一般软件开发都是多层结构,上层调用下层的接口,而各层的实现人员不同,一般大家都只写自己对应单元测试.对下层的依赖我们通过IOC ...
- 重温ASP.NET WebAPI(二)进阶
重温ASP.NET WebAPI(二)进阶 介绍 本文为个人对WebApi的回顾无参考价值. 本文内容: Rest和UnitOfWork 创建WebAPi的流程 IOC-Unity的使用 MEF ...
- 路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) ASP.NET WebApi技术从入门到实战演练 C#面向服务WebService从入门到精通 DataTable与List<T>相互转换
路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) MVC也好,WebAPI也好,据我所知,有部分人是因为复杂的路由,而不想去学的.曾经见过一位程序猿,在他MVC程序中, ...
- Asp.Net WebAPI的简介及创建
一.WebAPI简介 ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务.ASP.NET Web API 是一种用于在 .NET F ...
- Asp.Net WebApi核心对象解析(下篇)
在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...
- ASP.NET WebApi OWIN 实现 OAuth 2.0
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...
- Asp.Net WebApi核心对象解析(上篇)
生活需要自己慢慢去体验和思考,对于知识也是如此.匆匆忙忙的生活,让人不知道自己一天到晚都在干些什么,似乎每天都在忙,但又好似不知道自己到底在忙些什么.不过也无所谓,只要我们知道最后想要什么就行.不管怎 ...
随机推荐
- Odoo访问权限(一)
Odoo访问权限(一) 四个ODOO权限管理层次 一. Odoo 菜单级别: 即,不属于指定菜单所包含组的用户看不到该菜单.不安全,只是隐藏菜单,若用户知道菜单ID,仍然可以通过指定URL访问 二. ...
- Xamarin iOS教程之添加和定制视图
Xamarin iOS教程之添加和定制视图 Xamarin iOS用户界面——视图 在iPhone或者iPad中,用户看到的摸到的都是视图.视图是用户界面的重要组成元素.例如,想要让用户实现文本输入时 ...
- Maven入门指南③:坐标和依赖
1 . 坐标 maven 的所有构件均通过坐标进行组织和管理.maven 的坐标通过 5 个元素进行定义,其中 groupId.artifactId.version 是必须的,packaging 是可 ...
- spring boot 集成 druid
写在前面 因为在用到spring boot + mybatis的项目时候,经常发生访问接口卡,服务器项目用了几天就很卡的甚至不能访问的情况,而我们的项目和数据库都是好了,考虑到可能是数据库连接的问题, ...
- Azure虚机磁盘容量警报(邮件提醒)
上周有个客户提出这样的需求:根据虚拟机磁盘的实际使用量,当达到某一阈值时设置邮件提醒. 在这个需求中我们只需要解决两点问题: 计算虚拟机磁盘实际使用量 发送邮件 使用VS新建一个名为Calculate ...
- OpenVPN推送默认路由表
根据官方Server配置文件:https://github.com/OpenVPN/openvpn/blob/master/sample/sample-config-files/server.conf ...
- net自定义安装程序快捷方式
创建快捷方式对于绝大多数 Windows 用户来说都是小菜一碟了,然而,这项工作却为程序员带来不少麻烦..NET 没有提供简便直接的创建快捷方式的方法,那么在 .NET 中我们如何为应用程序创建快捷方 ...
- HDU 3979 Monster (贪心排序)
Monster Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 使用winrar自解压功能制作安装包
参考文献: bat脚本设置文件的只读属性:http://wenda.tianya.cn/question/0f484c28ffd8d4e9 bat脚本创建internet快捷方式:http://www ...
- delphi Image处理
procedure ImageDrawText(ATextEdo: IGGCCADTextEDO); var oImageBitmap: TBitmap; x1,x2,y1,y2: double; b ...