asp.net中为什么修改了配置文件后我们不需要重启IIS

本文转载:http://blog.itpub.net/12639172/viewspace-659819/

大家知道,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等文件。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏草根专栏

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

http://www.cnblogs.com/cgzl/p/9010978.html

15020
来自专栏派森公园

docker的reap问题

在使用docker容器的时候,应该了解“PID1僵尸进程reap”问题。如果使用的时候不加注意,可能会导致出现一些意想不到的问题。

15230
来自专栏程序员的SOD蜜

CentOS 7 安装Mono 和 MonoDevelop

【原文来自:http://www.linuxidc.com/Linux/2015-01/112350.htm】 好几年前安装过mono,后来一直没有再用过。最近...

457100
来自专栏FreeBuf

基于Python的远程管理工具(RAT) – Stitch

Stitch是一款基于Python的跨平台远程管理工具。由于其跨平台性,Stitch允许用户针对Windows, Mac OSX 或 Linux分别定制不同的p...

32350
来自专栏信安之路

Window 提权基础

再加上个人的理解写出的关于 Windows 提权基础的文章,其中有些地方因为不太实用所以做了适当修改,感谢 @hl0rey 的帮助和建议。

29500
来自专栏乐沙弥的世界

CentOS 7 下配置ip forward(虚拟路由器)

Linux 中ip forward功能是一个比较方便实用的功能,只需要简单配置,添加几条路由,即可实现ip转发。本文基于CentOS 7下采取一台机器充当虚拟路...

31820
来自专栏difcareer的技术笔记

最新版MacOS(10.13.2)编译Android 4.4.4源码

网上搜一下Mac编译Android源码,能搜到很多,但最新版的MacOS(10.13.2)编译Android4.4.4的却没有,本文记录我的编译过程。

17440
来自专栏openshift持续集成

jenkins邮件插件中的内容参数设置

众所周知,Jenkins默认提供了一个邮件通知,能在构建失败、构建不稳定等状态后发送邮件。但是它本身有很多局限性,比如它的邮件通知无法提供详细的邮件内容、无法定...

1K80
来自专栏容器云生态

Docker1.12尝试

前言:在docker1.12中默认增加了swarm mode 编排功能,并且官方支持更多的插件来进行docker的网路和外接存储插件,不过目前测试swarm m...

494100
来自专栏包子铺里聊IT

刷题外传之如何优雅的杀掉进程

进程(Process)是 Unix/Linux 系统下编程的核心知识。无论是小 Script 还是大 Daemon,启动后都是以进程的形势在 OS 中存在和执行...

39660

扫码关注云+社区

领取腾讯云代金券