首页
学习
活动
专区
圈层
工具
发布
30 篇文章
1
ASP.NET MVC5+EF6+EasyUI 后台管理系统(2)-easyui构建前端页面框架[附源码]
2
ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印
3
ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版
4
ASP.NET MVC5+EF6+EasyUI 后台管理系统(67)-MVC与ECharts
5
ASP.NET MVC5+EF6+EasyUI 后台管理系统(7)-MVC与EasyUI DataGrid
6
ASP.NET MVC5+EF6+EasyUI 后台管理系统(28)-系统小结
7
ASP.NET MVC5+EF6+EasyUI 后台管理系统(60)-系统总结
8
ASP.NET MVC5+EF6+EasyUI 后台管理系统(80)-自由桌面
9
ASP.NET MVC5+EF6+EasyUI 后台管理系统(91)-EF 连接 MySql
10
ASP.NET MVC5+EF6+EasyUI 后台管理系统(41)-组织架构
11
ASP.NET MVC5+EF6+EasyUI 后台管理系统(58)-DAL层重构
12
ASP.NET MVC5+EF6+EasyUI 后台管理系统(59)-BLL层重构
13
ASP.NET MVC5+EF6+EasyUI 后台管理系统-关于WebApi的用法
14
ASP.NET MVC5+EF6+EasyUI 后台管理系统(90)-EF 扩展操作
15
ASP.NET MVC5+EF6+EasyUI 后台管理系统(5)-EF增删改查
16
ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入
17
ASP.NET MVC5+EF6+EasyUI 后台管理系统(33)-MVC 表单验证
18
ASP.NET MVC5+EF6+EasyUI 后台管理系统(17)-LinQ动态排序
19
ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入
20
ASP.NET MVC5+EF6+EasyUI 后台管理系统(57)-插件---ueditor使用
21
ASP.NET MVC5+EF6+EasyUI 后台管理系统(50)-Easyui 扁平化皮肤
22
ASP.NET MVC5+EF6+EasyUI 后台管理系统(32)-swfupload多文件上传[附源码]
23
ASP.NET MVC5+EF6+EasyUI 后台管理系统(31)-MVC使用RDL报表
24
ASP.NET MVC5+EF6+EasyUI 后台管理系统(30)-本地化(多语言)
25
ASP.NET MVC5+EF6+EasyUI 后台管理系统-分配角色给用户
26
ASP.NET MVC5+EF6+EasyUI 后台管理系统--工作流演示截图
27
ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出
28
ASP.NET MVC5+EF6+EasyUI 后台管理系统(62)-EF链接串加密
29
ASP.NET MVC5+EF6+EasyUI 后台管理系统(92)-打印EasyUI 的datagrid表格
30
ASP.NET MVC5+EF6+EasyUI 后台管理系统(87)-MVC Excel导入和导出

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

前言:

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

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

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

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

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

示例代码下载   https://yunpan.cn/cRTHt5MuKavwH 访问密码 0a47

(这是一个已经包含了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

代码语言:javascript
复制
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 。必须在全局文件添加,本注入是运行时注入

代码语言:javascript
复制
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节点缺乏解析造成。

需要添加以下节点

代码语言:javascript
复制
 <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编写一个简单的请求的测试一下

代码语言:javascript
复制
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
$(function(){
    $.get("/Api/Values/5",function(data){
         alert(data);
        });
    });
</script>

5.运行并调试

添加控制反转代码到ValuesController

代码语言:javascript
复制
  [Dependency]
   public ISysPersonBLL m_BLL { get; set; }

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

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

可以顺利访问到数据库

最后参考代码下载  https://yunpan.cn/cBF9tkaE8ayy7  访问密码 f60b

下一篇
举报
领券