博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入
阅读量:6269 次
发布时间:2019-06-22

本文共 2445 字,大约阅读时间需要 8 分钟。

前言:

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

本节记录Asp.net MVC WebApi怎么利用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

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节点缺乏解析造成。

需要添加以下节点

运行之后就没有问题了。

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

5.运行并调试

添加控制反转代码到ValuesController

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

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

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

可以顺利访问到数据库

本文转自ymnets博客园博客,原文链接:http://www.cnblogs.com/ymnets/p/5648459.html,如需转载请自行联系原作者

你可能感兴趣的文章
2016中国VR开发者论坛第一期
查看>>
Hyper-V 2016 系列教程5 Hyper-V 服务器基本属性
查看>>
北京、天津工厂自动监测数据爬取
查看>>
第一个python程序简单加法计算器
查看>>
在CentOS下安装Tomcat8
查看>>
Weblogic classloader分析
查看>>
做技术做软件-----如何才能拿到上万的月薪
查看>>
linux 查看当前路径命令:pwd
查看>>
At.js – 用于 Web 应用程序的自动完成库
查看>>
[Android Pro] Android权限设置android.permission完整列表
查看>>
如何对抗硬件断点--- 调试寄存器
查看>>
mybatis学习
查看>>
从不同层面看cocos2d-x
查看>>
Struts2技术详解
查看>>
MFC应用程序向导生成的文件
查看>>
Oracle体系结构之oracle密码文件管理
查看>>
【leetcode】Remove Element (easy)
查看>>
mysql多表查询及其 group by 组内排序
查看>>
alsa的snd_pcm_readi()函数和snd_pcm_writei()
查看>>
Android学习网站推荐(转)
查看>>