软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 网络编程 > ASP.NET > asp.net修改配置文件无需重启IIS的原因

asp.net修改配置文件无需重启IIS的原因

大家知道,asp.net中,如果我们修改了配置文件只要把它保存之后,就会立刻反应到程序中,并不需要我们重启IIS。甚至我们可以在不停止IIS的情况下,直接替换应用程序下的文件,包括我们编译好的dll文件等,你需要做的只是替换你变换了的文件而已。那么.net是怎么做到的呢?

这要归功于.net的应用程序域机制,应用程序域是比进程小的程序元单位,也就是说一个进程中可以包含多个应用程序域。而各个域之间是独立的,不共享内存,也就是说各种静态变量等在不同的域之间是不共享的。

有了应用程序域,事情就好办了,当我们更改配置文件或者替换了一个核心的dll之后,这时.net的监控系统会报告我们的所作所为,于是处理asp.net的进程会为改修后的应用程序重新创建一个应用程序域,这个新的域会把所有的改动都反应进来,这时如果在有Request进来,就会使用新的域进行处理,而原有的域会被销毁掉。

实际上各个应用程序域使用的并不是我们配置在各虚拟目录下的dll文件,对于2.0,3.0,3.5来说真正使用的是C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files目录下的文件,所以我们才能直接替换dll等文件。

关于新建应用程序域我们可以做个简单的测试。在全局文件中Application_BeginRequest事件内加上以下的处理代码,来把每次请求的应用程序域的名字打到trace文件中,为了看得明显我们使用wran方法。

Context.Trace.Warn("MyCatolog", "Domain Name:" + AppDomain.CurrentDomain.FriendlyName);

最后别忘了在配置文件中设置Trace。

<trace enabled="true" pageOutput="true" requestLimit="44" traceMode="SortByTime" mostRecent="true"/>

下面我们可以访问我们的页面了。

  Trace如下图: 

  然后我们改一下配置文件,比如把requestLimit改成10,保存文件,我们再访问一次,如下图  

  大家看到域名发生了变化,也就是说这是一个新的应用程序域。

    相关阅读
    栏目导航
    推荐软件