项目使用的MVC4,.net 4.5 Nuget安装最新的autofac,一直提示不支持.net 4.5。没办法了,最后用Nuget控制台安装的老版本。因为我使用的是MVC4,所以直接安装的是autofac mvc4的集成。

命令:

Install-Package Autofac.Mvc4

  安装成功。

示例如下:

            var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterType<Cms.BLL.SysManagementService>().As<ISysManagementService>();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

  第一行声明IoC的builder

第二行绑定程序集中的Controllers

第三行注入我们需要的接口对应的实现

第四行获取IoC的容器

第五行,利用MVC的依赖解析接口,将autofac的依赖解析传入

需要特别注意第二行:要注册的Controllrs所在的程序集。也就说,如果Controllers是一个独立的项目,那么需要传递相应的程序集名称。示例如下:

            var builder = new ContainerBuilder();
Assembly[] asm = GetAllAssembly("*.Controllers.dll").ToArray(); builder.RegisterControllers(asm);
builder.RegisterType<Cms.BLL.SysManagementService>().As<ISysManagementService>();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

  

  /// <summary>
/// 获取dll中Controller程序集
/// </summary>
/// <param name="dllName"></param>
/// <returns></returns>
private static List<Assembly> GetAllAssembly(string dllName)
{
List<string> pluginpath = FindPlugin(dllName);
var list = new List<Assembly>();
foreach (string filename in pluginpath)
{
try
{
string asmname = Path.GetFileNameWithoutExtension(filename);
if (asmname != string.Empty)
{
Assembly asm = Assembly.LoadFrom(filename);
list.Add(asm);
}
}
catch (Exception ex)
{
Console.Write(ex.Message);
}
}
return list;
} /// <summary>
/// 查找dll路径
/// </summary>
/// <param name="dllName"></param>
/// <returns></returns>
private static List<string> FindPlugin(string dllName)
{
List<string> pluginpath = new List<string>(); string path = AppDomain.CurrentDomain.BaseDirectory;
string dir = Path.Combine(path, "bin");
string[] dllList = Directory.GetFiles(dir, dllName);
if (dllList.Length > 0)
{
pluginpath.AddRange(dllList.Select(item => Path.Combine(dir, item.Substring(dir.Length + 1))));
}
return pluginpath;
}

  参考:http://www.lxway.com/45068094.htm

(这个点上坑了半天,一直报错“没有为该对象定义无参数的构造函数”,以为是autofac没入门,自己代码写错了。其实是自己分切了Controllers为独立项目,结果还一直在绑定Mvc的程序集,所以根本找不到注入)

asp.net MVC中使用Autofac小结 (遇到的最傻错误: 没有为该对象定义无参数的构造函数)的更多相关文章

  1. ASP.NET LinqDataSource数据绑定后,遇到[MissingMethodException: 没有为该对象定义无参数的构造函数。]问题。

    问题出现的情形:LinqDataSource数据绑定到DetailsView或GridView均出错,错误如下: “/”应用程序中的服务器错误. 没有为该对象定义无参数的构造函数. 说明: 执行当前 ...

  2. asp.net MVC 错误信息“没有为该对象定义无参数的构造函数”请求各位大神帮忙!

    在做一个登录的功能,没有用MVC自己生成的identity代码,仿照别人的代码写出了以后出现错误. 错误信息如下: 代码如下: 求各位asp.net大神支招,网上找了资料最终也没解决这个问题.

  3. 在Mvc中进行异步请求是出现(没有为该对象定义无参数的构造函数)

    解决办法就是给相应的类添加无参数的构造函数:

  4. .Net Framework 4.5.1 ASP.NET MVC 5 下新建视图报“错误 运行所选代码生成器时出错 无法检索元数据 没有为该对象定义无参数构造函数”

    当在控制器中新建视图的时候,选择的视图界面如下: 执行添加后报如下错误: 错误的内容为: 错误运行所选代码生成器时出错 无法检索"XXX"的元数据没有为该对象定义无参数构造函数 U ...

  5. Ioc容器Autofac系列(2)-- asp.net mvc中整合autofac

    经过上篇蜻蜓点水的介绍后,本篇通过实例快速上手autofac,展示当asp.net mvc引入了autofac之后会带来什么. 创建Asp.net MVC并引入Autofac 首先,创建一个MVC站点 ...

  6. Asp.net mvc中整合autofac

    创建Asp.net MVC并引入Autofac 首先,创建一个MVC站点,为方便起见,选初始带HomeController和AccountController的那种.然后通过NuGet或到Autofa ...

  7. 如何在asp.net mvc 中使用Autofac 控制反转(Ioc)

    前言 最近看了一些关于Ioc方面的开源项目,里面的类跳来转去,看的迷迷糊糊的.项目里根本不需要这么“复杂的”设计,只需简单完成Ico,达到解耦的目的,并且能高效的完成项目.于是参考autofac的官网 ...

  8. Asp.net mvc中应用autofac

    1.nuget安装依赖

  9. 在ASP.NET MVC中使用IIS级别的URL Rewrite

    原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的文章(2.3.4),把ASP.NET平台上进行URL Rewrit ...

随机推荐

  1. swift 动态获取label宽度或高度

    func getLabHeigh(labelStr:String,font:UIFont,width:CGFloat) -> CGFloat { let statusLabelText: NSS ...

  2. Cocos2dx使用网络图片

    #ifndef __Demo__Connection__ #define __Demo__Connection__ #include <iostream> #include "c ...

  3. MVC源码解析 - 配置注册 / 动态注册 HttpModule

    本来这一篇, 是要继续 Pipeline 的, 但是在 Pipeline之前, 我看到了InitModules()方法, 所以决定, 在中间穿插一篇进来. 这一篇来讲一下 IHttpModule 的加 ...

  4. linux服务器开发二(系统编程)--线程相关

    线程概念 什么是线程 LWP:Light Weight Process,轻量级的进程,本质仍是进程(在Linux环境下). 进程:独立地址空间,拥有PCB. 线程:也有PCB,但没有独立的地址空间(共 ...

  5. Linux虚拟机下安装配置MySQL

    一.      下载mysql5.7 http://mirrors.sohu.com/mysql/MySQL-5.7/ Linux下载: 输入命令:wget http://mirrors.sohu.c ...

  6. 卸载jdk以及重新安装jdk

    新旧交替重复安装会混乱,个人解决办法是: 1. 用系统 control panel 中 uninstall 卸载java se development kit 和 java update. 2. 打开 ...

  7. 第六届全球游戏大会( GMGC 北京 2017 )有哪些看点?

    全球游戏大会作为亚太地区极具影响力的全球性游戏行业盛会,本次第六届全球游戏大会( GMGC 北京 2017 )将力邀全球50个国家.500多位业界领袖.5000多家企业.50000多位业界精英参展参会 ...

  8. AutoLayout 之NSLayoutConstraint

    这次主要讲的用代码来设置AutoLayout,为实现添加autoLayout视图主要介绍使用如下该方法,调用方法:- (void)awakeFromNib {} +(instancetype)cons ...

  9. soa服务治理-dubbo

    dubbo官网:http://dubbo.io/Home-zh.htm 学习点: 1.  日志的配置

  10. redis服务器安装-SuSE Linux Enterprise Server 11 SP3

    一.下载 官网下载,可自选版本,点击进入下载,这里下载了redis-3.2.4 放到 /root/usr/local/redis/ 目录下 二.编译 1. 执行make编译redis tar -zxz ...