晨鸟科技

 找回密码
 注册
搜索
查看: 7811|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2011-2-17 16:25:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原文是:http://www.sealee.com/program/aspnet/aspnet-7686.html
; y6 D+ r: A$ r: F) k* r! H大家知道,asp.net中,如果我们修改了配置文件只要把它保存之后,就会立刻反应到程序中,并不需要我们重启IIS。甚至我们可以在不停止 IIS的情况下,直接替换应用程序下的文件,包括我们编译好的dll文件等,你需要做的只是替换你变换了的文件而已。那么.net是怎么做到的呢?
+ X( h$ x1 e5 J7 _6 e8 l( W8 @  |' D( t
这要归功于.net的应用程序域机制,应用程序域是比进程小的程序元单位,也就是说一个进程中可以包含多个应用程序域。而各个域之间是独立的,不共享内存,也就是说各种静态变量等在不同的域之间是不共享的。
! g) \6 }1 x  A" n# e" |; w
4 I+ ]6 q/ r. e4 V2 }4 N有了应用程序域,事情就好办了,当我们更改配置文件或者替换了一个核心的dll之后,这时.net的监控系统会报告我们的所作所为,于是处理 asp.net的进程会为改修后的应用程序重新创建一个应用程序域,这个新的域会把所有的改动都反应进来,这时如果在有Request进来,就会使用新的域进行处理,而原有的域会被销毁掉。
- A" `. k1 \! n/ x7 J+ R- a5 y# X% ?8 H7 D# _
实际上各个应用程序域使用的并不是我们配置在各虚拟目录下的dll文件,对于2.0,3.0,3.5来说真正使用的是C:\WINDOWS \Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files目录下的文件,所以我们才能直接替换dll等文件。
3 K8 Y/ c& X( L& J1 N
5 {$ }* j4 e8 q/ b. Z% R2 ~0 A  n--测试部分内容从略
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|晨鸟科技 ( 沪ICP备09012675号 )

GMT+8, 2024-5-17 19:19 , Processed in 4.831241 second(s), 9 queries , Wincache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表