在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 ...
随机推荐
- 跨站请求伪造解决办法之——过滤referer
当然,referer也是可以伪造的,Http请求本身就没有不能伪造的东西. 所以本方法只能在一定程度上防止非法请求,仅供参考. 项目的web.xml中增加过滤器: <filter> < ...
- 用 WebSocket 实现一个简单的客服聊天系统
一 需求 一个多商家的电商系统,比如京东商城,不同商家之间的客服是不同的,所面对的用户也是不同的.要实现一个这样的客服聊天系统,那该系统就必须是一个支持多客服.客服一对多用户的聊天系统. 二 思路 使 ...
- ZendServer中关于php.ini不同环境的建议
ZendServer根据开发环境和产品环境的不同情况,对php.ini中的一些选项做了建议设置,列表如下: ;;;;;;;;;;;;;;;;;;; ; Quick Reference ; ;;;;;; ...
- tomcat下运行war包
例如你下的包名test.war直接放入webapps目录下,到bin目录下双击启动startup.bat,不要关掉tomcat控制台窗口,回到webapps下应该要看到自动解压出一个test的目录,如 ...
- delete与delete [] 真正差别
我们通常从教科书上看到这种说明: delete 释放new分配的单个对象指针指向的内存 delete[] 释放new分配的对象数组指针指向的内存 那么,依照教科书的理解,我们看下以下的代码: int ...
- windows server 2003中端口默认不能使用问题
问题:在windows server 2003中IIS6.0新建站点,给了一个新端口(非80),然后配置好后不能访问 解决方案:系统内置防火墙需要添加对应端口,如下图: 即解决.
- Error: Could not find or load main class org.apache.flume.tools.GetJavaProperty
问题: [root@master conf]# flume-ng version Error: Could not find or load main class org.apache.flume.t ...
- Bash中的括号(三)
1.两个小括号用来对整数进行算术运算和逻辑运算,比如. 例如给变量赋值: $ a=+; echo $a + $ (( b = + )); echo $b 1+1 只是一个字符串,而 b 就是一个算术表 ...
- Myeclipse中误报错误解决办法
下午写jsp页面的时候,用了一个js文件,拖到MyEclipse下了报错,开始还以为是js文件问题,折腾了半天,后来才知道原来是Myeclipse误报错误.真坑爹啊呀~~ 解决方法: 点击你需要忽略错 ...
- 如何使用Photoshop(PS)将图片的底色变为透明
很多时候需要将一张图片的底色变得透明.本文描述了使用PS将图片的一部分变得透明的方法.本例将一段艺术字的背景去掉,将背景透明的文字单独保存成图片,这样以后将这段文字粘贴到其他素材上的时候,就不用担心它 ...