Asp.Net Web Forms/MVC/Console App中使用Autofac
2014-12-03 09:40
483 查看
本来简单介绍了Autofac在Asp.Net Web Forms中的应用,后来又添加了mvc、控制台应用程序中使用Autofac,详情请看源码。
ASP.NET Web Forms使用Autofac,至少需要一下步骤:
1,引用Autofac程序集。
2,添加Autofac Web Modules 到 Web.config。
3,在Global.asax中实现IContainerProviderAccessor接口。
我们创建一个ASP.NET Web Forms项目,命名为WebFormStudy。
添加引用
添加引用的最简单方式就是用NuGet,右击WebFormStudy项目下的References,选择Manage NuGet Packages,如下图:
在Search Online中输入auto.web字样,Autofac WebForms Intergration 就搜索到了,点击Install。
安装完后,我们就可以在References中看到添加了Autofac.dll和Autofac.Integration.Web.dll,如下图:
添加Modules到Web.config
Autofac管理组件的生命周期并且添加依赖注入到Asp.net管道是通过IHttpModule实现的(注:在HttpApplication 初始化过程中,会根据配置文件加载并初始化相应的实现了IHttpModule接口的HttpModule 对象。对于HttpApplication来说,在它处理HTTP 请求的不同阶段会触发不同的事件,而HttpModule 的意义在于通过注册HttpApplication 的相应的事件,将所需的操作注入整个HTTP
请求的处理流程。ASP.NET 的很多功能,比如身份验证、授权、缓存等,都是通过相应的HttpModule 实现的。摘自:Asp.net Mvc4框架揭秘),你需要在web.config中配置这些Modules。
幸运的是,如果通过NuGet添加Autofac程序集,在安装的时候自动在Web.config中配置了相应的Modules,如下图:
Global.aszx中实现IContainerProviderAccessor接口
依赖注入模块需要HttpApplication实例实现IContainerProviderAccessor接口。一个完整的全局Application类如下所示:
public class Global : HttpApplication,IContainerProviderAccessor
{
static IContainerProvider _containerProvider;
public IContainerProvider ContainerProvider
{
get { return _containerProvider; }
}
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
#region 我们添加的代码
var builder = new ContainerBuilder();
//注册将被通过反射创建的组件
builder.RegisterType<DatabaseManager>();
builder.RegisterType<OracleDatabase>().As<IDatabase>();
_containerProvider = new ContainerProvider(builder.Build());
#endregion
}
}
DatabaseManager、OracleDatabase等类代码:
IDatabase
DatabaseManager
SqlDatabase
OracleDatabase
运行下,糟糕,报错了,如下图:
没关系,注释如下配置信息:
再次运行,ok,如下图:
源码地址
参考引用: http://www.cnblogs.com/liping13599168/archive/2011/07/16/2108209.html
作者:程序员蛋子
出处:http://zhangzhi19861216.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,若转载请在文章页面明显位置给出原文连接。
ASP.NET Web Forms使用Autofac,至少需要一下步骤:
1,引用Autofac程序集。
2,添加Autofac Web Modules 到 Web.config。
3,在Global.asax中实现IContainerProviderAccessor接口。
我们创建一个ASP.NET Web Forms项目,命名为WebFormStudy。
添加引用
添加引用的最简单方式就是用NuGet,右击WebFormStudy项目下的References,选择Manage NuGet Packages,如下图:
在Search Online中输入auto.web字样,Autofac WebForms Intergration 就搜索到了,点击Install。
安装完后,我们就可以在References中看到添加了Autofac.dll和Autofac.Integration.Web.dll,如下图:
添加Modules到Web.config
Autofac管理组件的生命周期并且添加依赖注入到Asp.net管道是通过IHttpModule实现的(注:在HttpApplication 初始化过程中,会根据配置文件加载并初始化相应的实现了IHttpModule接口的HttpModule 对象。对于HttpApplication来说,在它处理HTTP 请求的不同阶段会触发不同的事件,而HttpModule 的意义在于通过注册HttpApplication 的相应的事件,将所需的操作注入整个HTTP
请求的处理流程。ASP.NET 的很多功能,比如身份验证、授权、缓存等,都是通过相应的HttpModule 实现的。摘自:Asp.net Mvc4框架揭秘),你需要在web.config中配置这些Modules。
幸运的是,如果通过NuGet添加Autofac程序集,在安装的时候自动在Web.config中配置了相应的Modules,如下图:
Global.aszx中实现IContainerProviderAccessor接口
依赖注入模块需要HttpApplication实例实现IContainerProviderAccessor接口。一个完整的全局Application类如下所示:
public class Global : HttpApplication,IContainerProviderAccessor
{
static IContainerProvider _containerProvider;
public IContainerProvider ContainerProvider
{
get { return _containerProvider; }
}
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
#region 我们添加的代码
var builder = new ContainerBuilder();
//注册将被通过反射创建的组件
builder.RegisterType<DatabaseManager>();
builder.RegisterType<OracleDatabase>().As<IDatabase>();
_containerProvider = new ContainerProvider(builder.Build());
#endregion
}
}
DatabaseManager、OracleDatabase等类代码:
IDatabase
DatabaseManager
SqlDatabase
OracleDatabase
运行下,糟糕,报错了,如下图:
没关系,注释如下配置信息:
再次运行,ok,如下图:
源码地址
参考引用: http://www.cnblogs.com/liping13599168/archive/2011/07/16/2108209.html
作者:程序员蛋子
出处:http://zhangzhi19861216.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,若转载请在文章页面明显位置给出原文连接。
相关文章推荐
- Asp.Net Web Forms/MVC/Console App中使用Autofac
- 使用 ASP.NET MVC 和 Ext JS 构建以数据为中心的 Web 应用程序
- 使用ASP.NET MVC构建HTML5离线web应用程序
- Asp.net的Web项目使用App_Code文件夹
- (asp.net MVC学习)System.Web.Mvc.UrlHelper的学习与使用
- Test your ASP.NET MVC or WebForms Application on IIS 7 in 30 seconds
- 在 ASP.NET WebForms/MVC 中利用 HttpModule 添加全局站点统计(CNZZ、百度统计、Google Analytics等)脚本
- VS2012使用验证控件出现[ASP.NET]WebForms UnobtrusiveValidationMode 需要 'jquery' 的 ScriptResourceMapping。請加入 ScriptResourceMapping 命名的 jquery (區分大小寫)。的解决办法。
- 光脚丫学ASP.NET MVC(0004):在ASP.NET MVC中使用Forms身份验证
- Asp.net MVC 使用Autofac的简单使用 IOC
- \t\tAsp.net MVC VS Asp.net WebForms
- ASP.NET WebForms and MVC together in one project
- 我要学ASP.NET MVC 3.0(十): MVC 3.0 使用 Forms身份验证
- 在 ASP.NET WebForms/MVC 中利用 HttpModule 添加全局站点统计(CNZZ、百度统计、Google Analytics等)脚本
- Choosing between ASP.NET MVC and ASP.NET Webforms
- Mixing ASP.NET MVC and Webforms
- 依赖注入框架Autofac的简单使用,以及在 ASP.NET MVC 中的使用
- 在ASP.NET Web Application中使用App_Code文件夹引发的异常
- Plug-In Hybrids: ASP.NET WebForms and ASP.MVC and ASP.NET Dynamic Data Side By Side
- 使用Asp.Net MVC开发真正的Web程序