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://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?
網絡不好會很漫長,需要難心等待?;蛘叩絥uget官方下載離線的
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注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Powershell AWS 自动化管理
- 下一篇: Delete Volume 操作 - 每