基础才是重中之重~网站bin目录下的程序集自动加载

网站bin目录下的程序集一般由系统项目,项目引用的外部DLL及外挂DLL组成,它们在网站运行时会自动加载,这一点很重要,项目本身DLL及项目引入的DLL会自动加载,这没有问题,而外挂在bin目录的DLL也会自动加载,这很重要,因为,它可以使我们的应用程序更加灵活,在开发通用功能上,也显得扩展性更强!

一个例子,比如一个HttpModule,它是一个通用的功能,向页面添加一些缓存过期的共用信息,这对于你所有网站都是共用的,这时,可以建立一个HttpModule项目,它代码可能是这样

namespace TestHttpModule
{
    public class SEOModule : IHttpModule
    {
        #region IHttpModule 成员

        public void Dispose()
        {
            throw new NotImplementedException();
        }

        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
        }

        void context_BeginRequest(object sender, EventArgs e)
        {
            var application = (HttpApplication)sender;
            application.Context.Response.Expires = 0;
            application.Context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
            application.Context.Response.AddHeader("pragma", "no-cache");
            application.Context.Response.AddHeader("cache-control", "private");
        }
        #endregion
    }
}

而对于目录网站来说,只需要在web.config中配置一下这个module就可以了

  </pages>
    <httpModules>
      <add name="SEOModule" type="TestHttpModule.SEOModule"/>
    </httpModules>
  </system.web>

而将这个module.dll直接复制到目标网站的bin目录下,网站运行就即可自动加载了。

事实上,我们通过.net应用程序的这个项目,可以开发很多通用的模块,并很好的与具体项目结合,实现具体项目的“功能性热插拔”!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:基础才是重中之重~网站bin目录下的程序集自动加载,如需转载请自行联系原博主。

时间: 2024-10-26 16:36:37

基础才是重中之重~网站bin目录下的程序集自动加载的相关文章

asp图片显示问题-Asp中如何把一个网站的某个目录下的图片全部加载在页面

问题描述 Asp中如何把一个网站的某个目录下的图片全部加载在页面 界面代码 后台代码//图片存在//photo/US000001/我的相册/1.jpg//其中US000001是u.use_id可以获取的我的相册是DropDownListPhoto.SelectValue的值 private void DataListPhotoBind() {//其中u.use_id是用户id string path = Server.MapPath(""photo"") + &qu

基础才是重中之重系列~目录(永久更新中)

本系列的文章主要是讲C#基础,面向对象OOP及OOD的相关知识,而且本系列文章将一直会更新下去,感谢您的阅读 基础才是重中之重系列~目录 第一回    基础才是重中之重~类是怎么执行的 第二回    基础才是重中之重--面向抽象编程(抽象类的多态性) 第三回    基础才是重中之重--派生类集合与基类集合可以相互转换吗? 第四回    基础才是重中之重~你是否真正理解static对象 第五加    基础才是重中之重--对var的误会,对不起,我愿望你了 第六回    基础才是重中之重~理解内存中

ASP.NET MVC 3网站BIN目录手动部署

转自 http://blog.darkthread.net/post-2011-07-08-deploy-asp-net-mvc3-bin.aspx   ASP.NET MVC Application在执行时,预设会引用注册在GAC的System.Mvc.dll等程式库,但如果要部署的主机没安装ASP.NET MVC,就会产生Could not load file or assembly 'System .Web.Mvc, Version=3.0.0.0, Culture=neutral, Pu

DAL已经引用了,为什么不出现在Bin目录下???

问题描述 我用UI引用BLLBLL引用IBLLIBll引用IDALIDAL引用DALFactoryDALFactory引用DAL为什么其他程序集都有,就是没有DAL我直接用UI引用DAL时Bin目录下才有DAL为什么上面链式引用就没有DAL了 解决方案 解决方案二:本来就是这样,除非你将dll的生成动作设置为"AlwaysCopy"解决方案三:为什么你一定要在UI里看见DAL?既然你是通过UI调用BLL,BLL再调用DAL,UI根本就不应该直接能够看见DAL解决方案四:本来就是这样子的

基础才是重中之重~开发人员应用学会用throw

无论是.net还是java,在开发程序时都难免会用到throw关键字,对于初学者一般会认为它与try...catch捆绑在一起,这当然是错误的,事实上,throw的一个最重要的作用就是: 让程序告诉用户一些事情,这些事情一般是开发人员之前定义好的,如对于一个输入文本框,你需要输入给定数字,但如果输入的不是给定的数据范围,则可以通过throw告诉用户! 让程序告诉开发人员一些事情,这些事情一般是底层开发人员之前定义好的,如果一些业务规范,如果开发人员输入的不合法,程序就会抛出一个异常,以告诉表层开

基础才是重中之重~用好configSections让配置信息更规范

对于小型项目来说,配置信息可以通过appSettings进行配置,而如果配置信息太多,appSettings显得有些乱,而且在开发人员调用时,也不够友好,节点名称很容易写错,这时,我们有几种解决方案 1 自己开发一个配置信息持久化类,用来管理配置信息,并提供面向对象的支持2 使用.net自带的configSections,将配置信息分块管理,并提供实体类,便于开发人员友好的去使用它 本文主要说说第二种方案,它由实体类,实体类工厂及配置文件三个部分,看代码: 实体类设计: namespace Co

基础才是重中之重~延迟初始化

概念:一个对象的延迟初始化(也称延迟实例化)意味着该对象的创建将会延迟至第一次使用该对象时. 延迟初始化主要用于提高性能,避免浪费计算,并减少程序内存要求. 以下是最常见的方案: 有一个对象的创建开销很大时,应用程序可能不会使用它. 例如,假定您在内存中有一个 Customer 对象,该对象的 Orders 属性返回一个 Orders 对象. 初始化 Orders 对象可能需要创建 Orders 对象的一个大数组(Orders[]),并可能需要数据库连接. 如果用户从不访问 Orders 属性,

基础才是重中之重~理解内存中的栈和堆

.NET中使用stack(栈)和heap(堆)两种结构在内存中存储数据,今天咱们就来说说这两个结构 Value Types,值类型      在C#中,值类型继承自System.ValueType的,它们分别是       Bool,   byte ,  char, decimal, double, enu, float, int, long, sbyte, short, struct, uint, ulong, ushort Reference Types 引用类型     引用类型包括所有的

基础才是重中之重~Conditional特性使代码根据条件在debug或者release模式中执行

众所周知,自从.net中出现了特性(attribute)之后,代码变得更加简洁,可读性更强了,今天主要说一下Conditional特性,Conditional它主要是约束你的代码段在哪种条件下进行执行,我们今天主要针对DEBUG和TRACE这两个条件约束,它们可以当作是Conditional特性的输入参数,形式如下: 1 [Conditional("DEBUG")] 2 protected static void LogDebugInfo() 3 { 4 //在debug模式输出一些调