系列目录

前言:

有时候我们系统需要开放数据给手机App端或其他移动设备,不得不说Asp.net WebApi是目前首选

本节记录Asp.net MVC WebApi怎么利用Unity注入。系列开头已经讲解了普通的Asp.net MVC如何用Unity注入容器

不明白什么是IOC,DI,控制反转的自行百度补脑,否则无法阅读本文

其实这也是一次技术上的记录,因为找遍大百度居然没有可以用的利用Unity注入的WebApi!感谢随风朋友的提醒。才能完成本节的指导

为了更好的理解,请下载代码

链接:https://pan.baidu.com/s/1QjKHPbyNELrrZhuM3JD0dA 密码:lv1f

(这是一个已经包含了Unity注入的普通MVC例子)包含4个需要被注入的类库,BLL,IBLL,DAL,IDAL

开发工具:VS2013+SQL2012(数据库不是必要)

开始:

1.新建Asp.Net MVC WebApi项目

2.安装Unity.WebApi程序包解析一下,这里有依赖项:Unity >=4.0.1

(我们之前的注入就只安装了Unity)所以Unity.WebApi是需要Unity4.0.1支持的。

安装Unity.WebApi会自动安装很多依赖项:Unity (≥ 4.0.1),CommonServiceLocator,Microsoft.AspNet.WebApi.Core,Microsoft.AspNet.WebApi.Client ,Newtonsoft.Json

网络不好会很漫长,需要难心等待。或者到nuget官方下载离线的

3.Apps.Core也需要同样安装Untiy.WebApi

安装完成后在Apps.WebApi下将自动多出一个文件

添加代码到UnityConfig.cs

using Apps.Core;
using Microsoft.Practices.Unity;
using System.Web.Http;
using Unity.WebApi;namespace Apps.WebApi
{public static class UnityConfig{public static void RegisterComponents(){UsingUnityContainer.Init();DependencyRegisterType.Container_Sys(ref UsingUnityContainer._container);GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(UsingUnityContainer._container);}}
}

最后添加UnityConfig.RegisterComponents();到Global.asax 。必须在全局文件添加,本注入是运行时注入

using Apps.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;namespace Apps.WebApi
{public class WebApiApplication : System.Web.HttpApplication{protected void Application_Start(){AreaRegistration.RegisterAllAreas();GlobalConfiguration.Configure(WebApiConfig.Register);FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);BundleConfig.RegisterBundles(BundleTable.Bundles);UnityConfig.RegisterComponents();}}
}

4.修复错误

运行之后会出现错误

这是由于Web.config节点缺乏解析造成。

需要添加以下节点

 <dependentAssembly><assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" /></dependentAssembly><dependentAssembly><assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" /><bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>

运行之后就没有问题了。

在Home/Index.cshtml编写一个简单的请求的测试一下

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
$(function(){$.get("/Api/Values/5",function(data){alert(data);});});
</script>

5.运行并调试

添加控制反转代码到ValuesController

  [Dependency]public ISysPersonBLL m_BLL { get; set; }

这样我们就可以用m_BLL来访问BLL的方法,达到控制反转的目的

如果断点执行到调用处,那么恭喜你,注入顺利成功,可以调用了(配图为返回数据库第一条数据的ID,数据和脚本在源码下载查看)

可以顺利访问到数据库

ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入相关推荐

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

    开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB  升级后界面效果如下: 日程管理   http:// ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统

    ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...) 开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联 ...

  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统-WebApi的用法与调试

    ASP.NET MVC5+EF6+EasyUI 后台管理系统-WebApi的用法与调试 1:ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-WebApi与Unity注入 使用Uni ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(51)-系统升级

    系统很久没有更新内容了,期待已久的更新在今天发布了,最近花了2个月的时间每天一点点,从原有系统 MVC4+EF5+UNITY2.X+Quartz 2.0+easyui 1.3.4无缝接入 MVC5+E ...

  5. ASP.NET MVC5+EF6+EasyUI 后台管理系统(2)-easyui构建前端页面框架[附源码]

    系列目录 前言 为了符合后面更新后的重构系统,本文于2016-10-31日修正一些截图,文字 我们有了一系列的解决方案,我们将动手搭建新系统吧. 后台系统没有多大的UI视觉,这次我们采用的是标准的左右 ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(67)-MVC与ECharts

    系列目录 ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(92)-打印EasyUI 的datagrid表格

    前言 应用系统有时候需要打印Datagrid的表格内容,我们本节就来学习打印datagrid内容 打印主要使用:web打印(我们之前有讲过web打印插件jqprint) + 将datagrid重新编制 ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统--任务调度系统解析

    系列目录 任务调度系统是什么:他是一个类似Sql Server的代理,他可以帮助你定时处理一些SQL事务 但是他又远远超过代理,因为他还能定时执行一些C#方法,比如定时发送邮件等 总结:任务可以执行的 ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统(73)-微信公众平台开发-消息管理

    前言 回顾上一节,我们熟悉的了解了消息的请求和响应,这一节我们来建立数据库的表,表的设计蛮复杂 你也可以按自己所分析的情形结构来建表 必须非常熟悉表的结果才能运用这张表,这表表的情形涵盖比较多 思维导 ...

最新文章

  1. row number mysql_MySQL中的ROW_NUMBER()
  2. Iterator(迭代器)接口 --对象循环遍历
  3. 将Mongodb部分数据导入mysql数据库
  4. oracle数据库批量操作系统,Oracle批量操作数据库
  5. opencv阈值化(五)
  6. 基于MFC的socket编程(异步非阻塞通信)
  7. 常规对数据库库的操作
  8. STM32正交编码器驱动电机
  9. mysql是开放源代码_MySQL 是目前最流行的开放源代码的小型( )。_学小易找答案
  10. (附源码)app订餐APP 毕业设计 190711
  11. Linux虚拟机怎么越狱,iOS 7完美越狱教程:5分钟轻松搞定
  12. 无需ROOT卸载或禁用vivo Z5手机的内置软件
  13. 【测试】软件测试之测试用例的设计方法
  14. Redis之击穿、穿透、雪崩问题
  15. 最短路计数(入门最短路)
  16. 女朋友想要听歌,我反手用Flutter做了2个音乐播放器,给她拿捏了
  17. 传说中的“睡眠算法”的输出分析
  18. thinkpad笔记本 刷bios失败,被救回方法
  19. Java程序员日常开发提效工具(谷歌,Idea)-长期更新
  20. LTE中物理资源块的进一步认识

热门文章

  1. 安装Windows服务时出现试图加载格式不正确的程序或系统找不到指定的文件以及相关问题
  2. win32 API 遍历一个目录下的文件
  3. Bash命令行历史用法【转】
  4. Python数据分析学习笔记
  5. select2 api参数的文档
  6. hibernate配置之property name=hbm2ddl.autocreate/property导致每次创建SessionFactory都清空数据库中的数据...
  7. clang 搭建和编译boost 和zero ICE库 (Ubuntu10 64)
  8. 2013年3月空调类品牌网络知名度排名
  9. Go Web开发之Revel - 组织结构
  10. 第二十三模板 18标准模板库