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等文件。

时间: 2024-12-06 16:42:24

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

Eclipse中避免修改后台代码后手动install和重启

之前每次修改maven多模块项目后都得重新执行mvn install ,install完还得重启jetty/tomcat服务器,非常浪费 时间,其实修改代码后可以不用执行install,也不用重启应用(修改配置文件除外),就如同修改前端页面文件一样,一 切都只需在Eclipse中的一个简单配置: debug -> debug Configurations -> 勾选复选框"Resolve Workspace artifacts" 重启应用done !

让asp.net程序在修改web.config后不重启

默认情况下web.config修改后,asp.net程序会被重启.为了防止程序重启,要修改machine.config 文件. machine.config默认在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG目录下. restartOnExternalChanges="false" requirePermission="false" /> restartOnExternalChanges设置为false

Liferay 7.0 修改service.xml后如何让portal重新执行tables.sql

一.问题 如果你开发了service-builder类型的项目(我肯定你一定会开发这种类型的项目),其中所使用的业务实体的数据库表结构就在service.xml中配置,然后执行build-service生成相关dao层的代码(不清楚dao的概念的参考这篇文章),然后部署项目,portal就会自动执行创建数据库表的sql语句.在62开发中,修改service.xml后,执行build-service,部署项目,portal会根据表结构的变化帮你自动修改数据里面的表,并且尽可能保留数据(我试过,增加

解决Windows服务修改配置文件后必须重启的问题

原文地址:http://www.cnblogs.com/jeffwongishandsome/archive/2011/04/24/2026381.html 解决方法:读取配置文件前先刷新文件 // 刷新命名节,在下次检索它时将从磁盘重新读取它. ConfigurationManager.RefreshSection("appSettings"); recordCount = Math.Abs(int.Parse(ConfigurationManager.AppSettings[&qu

解决Ext4.2.3中propertyGrid修改后点击排序报错

Ext4.2.3中PropertyGrid修改后点击排序报错,具体错误信息如下: 一开始还怀疑是自己哪里配置错了,各种尝试结果还是一样.查遍百度和谷歌,无果,只有一篇帖子说是4.2.4修正了.还是自己动手吧,自己动手丰衣足食. 点开报错地方(如下图所示),原来是me.field.column没有定义. 然后继续找,找啊找啊找到Ext.grid.property.Grid的getCellEditor方法.此方法有参数column,可在方法体内,column就没有被用到过,于是就感觉问题出在这里.

windows 7中修改用户配置文件的路径

在windows 7中用户配置文件的默认位置是在c:\users文件夹中.我建议最好在安装完操作系统之后就将用户配置文件的默认位置改变到其他分区. Warning在视图更改注册表之前,请备份好注册表相关键值. 1. 将c:\user文件夹Copy到新的位置(默认情况下 "Default" directory 是隐藏的,请到 Tools > Folder Options > View (tab) > Show Hidden files, folders, and dri

MySQL在windows系统中修改datadir路径后无法启动问题,报错1067

windows server2008下如何更改MySQL数据库的目录的帖子已经很多了,这里简单介绍一个步骤,如果不成功请先查看其它帖子. 更改默认的mysql数据库目录 将 C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data 改到 D:\MysqlData 1. 建立文件夹 D:\MysqlData 2. 停止 mysql 服务,将 "C:\Documents and Settings\

SQLSERVER中返回修改后的数据

在公司看到同事写了个SQL2005的新特性的文章,觉得很实用,在这里和大家分享下. 这种技术主要是用到了inserted和deleted虚拟表,这两张表相信大家都很熟悉.以前我们主要是在触发器中使用. 我们先来复习下这两个表: Inserted和Deleted这两个表是逻辑表,并且这两个表是由系统管理的,存储在内存中,不是存储在数据库中,因此,不允许用户直接对其修改.这两个表的结构与被该触发器作用的表在相同的表结构.这两个表是动态驻留在内存中的,当触发器工作完成,它们也被删除. 接下来,看看我们

win系统环境变量中增加或修改环境变量后快速生效

win系统环境变量中增加或修改环境变量后,需重启系统才能使之生效. 下面介绍一种方法: 以修改环境变量"PATH"为例,修改完成后,进入DOS命令提示符,输入:set PATH=C: ,关闭DOS窗口.再次打开DOS窗口,输入:echo %PATH% ,值已经生效. 不用担心DOS窗口中的修改会影响环境变量的值,DOS窗口中的环境变量只是Windows环境变量的一个副本而已.但是对副本的修改却会引发Windows环境变量的刷新,这正是我们想要的!