在asp.net页面上得到Castle容器的实例
在项目中使用Castle IOC容器,Asp.net程序中如何得到Castle容器内。
可以如下实现:
1、Gloabal实现接口IContainerAccessor
public class Global : System.Web.HttpApplication, IContainerAccessor
      {
/// <summary>
         /// 必需的设计器变量。
         /// </summary>
          private System.ComponentModel.IContainer components = null;
          private static WindsorContainer container;
          
         public Global()
         {
              InitializeComponent();
         }
protected void Application_Start(Object sender, EventArgs e)
         {
              container = new MyContainer(new XmlInterpreter("app_config.xml"));
         }
protected void Session_Start(Object sender, EventArgs e)
         {
}
……
    protected void Application_End(Object sender, EventArgs e)
    {
              container.Dispose();
    }
#region IContainerAccessor implementation
public IWindsorContainer Container
         {
              get { return container; }
         }
             
}
2、使用如下类来获取容器实例,这段代码来自Castle.MVC
     /// <summary>
     /// Uses the HttpContext and the <see cref="IContainerAccessor"/> 
     /// to access the container instance.
     /// </summary>
     public abstract class ContainerWebAccessorUtil
     {
/// <summary>
         /// 从application中获取一个容器实例
         /// </summary>
         /// <returns>返回一个 IWindsorContainer</returns>
         public static IWindsorContainer ObtainContainer()
         {
IContainerAccessor containerAccessor =
HttpContext.Current.ApplicationInstance as IContainerAccessor;  
              if (containerAccessor == null)
              {
                   throw new ApplicationException("你必须在HttpApplication中实现接口 IContainerAccessor 暴露容器的属性”);
}
IWindsorContainer container = containerAccessor.Container;  
              if (container == null)
              {
                   throw new ApplicationException("HttpApplication 得不到容器的实例");
              }
              return container;
}
     }
3、在具体的用户控件,页面的后置代码中通过ContainerWebAccessorUtil. ObtainContainer()获取容器实例。当然如果使用Castle.MVC,MVC框架也是这样用的,自己就不要这么麻烦了,可以将这个写在页面和控件的基类中。
在asp.net页面上得到Castle容器的实例的更多相关文章
- asp.net 页面上的点击事件
		asp.net 页面上 服务器端控件Button 有两个click事件如 <asp:Button ID="Button1" runat="server" ... 
- 在asp.net页面上按回车会触发Imagebutton控件的Click事件
		原文:在asp.net页面上按回车会触发Imagebutton控件的Click事件 问题: 用asp.net做的aspx页面,无论是否有文本框.下拉框.复选框……获得焦点,只要在当前页面上按一下回车就 ... 
- asp.net 页面上传文件控件后台代码Request.Files获取不到
		今天开发中遇到页面文件上传控件选择了文件,而后台Request.Files.Count取值为0,之前开发中遇到过几次,老是忘掉,今天记下来. html: <input type="fi ... 
- ASP.NET页面上传文件时提示文件大小超过请求解决方法
		在webconfig中节点 <system.web> </system.web> 下加入以下代码:maxRequestLength为限制上传文件大小,executionTime ... 
- ASP.NET页面支持的指令
		页面的处理指令 页面指令的处理用于配置执行该页面的运行时环境.在ASP.NET中,指令可以位于页面的任何位置,但良好且常见的习惯是将其置于文件的开始部分.除此,页面指令的名称是不区分大小写的,且指令的 ... 
- asp.net清空页面上的所有TextBox
		Asp.net中一次性清空页面上的所有TextBox中的内容,由于TextBox在客户端以<input type=”text”>形式来呈现的,因此解决方案有客户端和服务器端两种方式,服务器 ... 
- ASP.NET Web API 帮助(help)页面上没有 Test API按钮的解决方法
		参与一个web API项目时发现它的help页面特别好用,不仅可以根据webapi的方法和注释自动生成帮助文档以方便查阅,还可以在这个页面上测试webapi方法.于是在自己新建项目时也打算将这个hel ... 
- [AaronYang原创] 大话ASP.NET MVC3+ (C#与DOM与JS页面上的很炫的技巧)
		案例一:比如我要传递一个新闻标题和新闻内容 存储到数据库去 1.最简单的通用Url公式就是 function getUrl() { var d = $("#表单ID").seria ... 
- ASP.NET Core - 利用Windsor Castle实现通用注册
		问题引入 在ASP.NET Core - 依赖注入这篇文章里面,我们知道了如何利用ASP.NET Core原生的容器来实现依赖注入的,那我们为什么要替换掉默认的 IoC容器呢?从ASP.NET Cor ... 
随机推荐
- 尚学堂 hadoop
			mr spark storm 都是分布式计算框架,他们之间不是谁替换谁的问题,是谁适合做什么的问题. mr特点,移动计算,而不移动数据. 把我们的计算程序下发到不同的机器上面运行,但是不移动数据. 每 ... 
- docker中批量删除 tag为none的镜像
			添加定时任务,批量删除tag 为none 的镜像 ,释放磁盘空间 [root@weifeng]:~# crontab -l */ * * * /usr/bin/docker rmi `docker ... 
- lucene 分词器
			分词器 作用:切分关键词的. 在什么地方使用到了:在建立索引和搜索时. 原文:An IndexWriter creates and maintains an index. 1,切分: An Index ... 
- Mysql 中 trim 的用法
			需求:去掉contract字段值中的% update gsfrankfurt set contract = trim(both "%" from contract); 
- php5 升级 php7 版本遇到的问题处理方法总结
			为了能够更好的提升系统的安全性,把原来的进销存系统源码升级,遇到了一些问题在这儿总结一下: 1.mysql引擎在php7中不在支持会导致以下错误 Uncaught Error: Call to a m ... 
- log4cxx在linux下的编译使用
			最近在linux下使用log4cxx库,按照其官方文档提供的方法来进行编译,不能成功,又利用google搜索了好几个中文博客上讲述在linux下编译使用log4cxx库的方法,依然不能成功,在这里我奉 ... 
- zookeeper(二):linux centos下安装zookeeper(单机和集群)
			下载 http://zookeeper.apache.org/releases.html 解压 tar –zxvf zookeeper-3.4.6.tar.gz 解压文件到"/usr/loc ... 
- 李洪强详细介绍SDWebImage
			SDWebImage是一个开源的第三方库,它提供了UIImageView的一个分类,以支持从远程服务器下载并缓存图片的功能.它具有以下功能: 提供UIImageView的一个分类,以支持网络图片的加载 ... 
- CCNA2.0笔记_IP连接排错
			IPv4 路由排错 ping tracert traceroute telnet show mac address-table show interfaces fastEthernet 0/1 sho ... 
- linux vi/vim文本编辑
			在linux环境下,我们用的最多的文本编辑命令就是vi了,vim是vi的增强版.学习vim时候整理了一下常用的命令行,一起学习. 介绍一下vim的三种常见状态模式: 命令模式,插入模式(编辑),正常模 ... 
