积极答复者
修改了Web.config文件到底会不会引发Asp.net程序重启????为什么网上有的说有,有的说没有?官方文档也没提???

问题
-
在网上看到,“在asp.net中,web.config修改保存后会自动立刻成效,不用再像asp中的配置文件修改后需要重新启动web应用程序才能生效了。”及“在Web应用程序运行时,对Web.config文件的修改不需要重启服务就可以生效”
上面说的是,修改web.config不会引发重启。
而我又看到了“另外一个注意事项是ASP.NET runtime将随时监视web.config,一旦web.config有了改动,ASP.NET将重新启动应用程序。具体的说 ASP.NET运行时将根据你更改web.config所在的应用程序域,重新建立应用程序对象实例。重建实例对性能有显著影响,所以不应该经常修改web.config。”
这句又说,修改web.config会引发重启。
到底是怎么回事啊?到底会不会引发重启?是与.net framework有关吗???
{我在本身上就的是VS2008,测试项目是2.0的,我又测试了在线的一个网站,是1.1版本的,对结果是一个重启一个不重启???汗,难位能给个准确的回复,到底会不会重启?}
答案
-
一个重启服务一个重新启动应用程序,说的明明不是一回事嘛
Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
Visual C++ MVP- 已标记为答案 KeFang Chen 2009年8月17日 3:25
-
你好,修改Web.config会引起Web程序重新编译,这个编译是自动的,ASP.NET Runtime将随时监视Web.config,一旦web.config有了改动,ASP.NET将重新编译程序!同理,App_Code文件夹里面的类也有这样的现象。
还有,你上面两个情况,是作者在不同的环境的建议,一个是开发期间,一个是生产期间。生产期间不建议随便修改配置文件,开发期间修改很方便改了就生效了!
jon.valett@gmail.com- 已编辑 邹俊才Moderator 2009年8月15日 3:47
- 已标记为答案 KeFang Chen 2009年8月17日 3:25
全部回复
-
一个重启服务一个重新启动应用程序,说的明明不是一回事嘛
Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
Visual C++ MVP- 已标记为答案 KeFang Chen 2009年8月17日 3:25
-
你好,修改Web.config会引起Web程序重新编译,这个编译是自动的,ASP.NET Runtime将随时监视Web.config,一旦web.config有了改动,ASP.NET将重新编译程序!同理,App_Code文件夹里面的类也有这样的现象。
还有,你上面两个情况,是作者在不同的环境的建议,一个是开发期间,一个是生产期间。生产期间不建议随便修改配置文件,开发期间修改很方便改了就生效了!
jon.valett@gmail.com- 已编辑 邹俊才Moderator 2009年8月15日 3:47
- 已标记为答案 KeFang Chen 2009年8月17日 3:25
-
"在asp.net中,web.config修改保存后会自动立刻生效,不用再像asp中的配置文件修改后需要重新启动web应用程序才能生效了 ",请问这是在重新编译后,才立刻生效的吧。
但确有
<section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
restartOnExternalChanges="false" requirePermission="false" />
asp.net程序会被重启。为了防止程序重启,要修改machine.config 文件
上面的方法阻止了重新编译,但web.config中却也生效了。?????? -
-
是的,这里有关于配置文件的官方机器翻译文档,请参考
谢谢,我这就看看。
http://support.microsoft.com/default.aspx/kb/307626/zh-cn
jon.valett@gmail.com
我还有一点不明白:是不是,修改的内容,只有在重新编译时,才生效呢?如果是,那以下,就太让人费解了
asp.net程序会被重启。为了防止程序重启,要修改machine.config 文件
<section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
restartOnExternalChanges="false" requirePermission="false" />
-
你好,程序一定要编译后才生效,不编译的话,程序集还是原来的不会生效。
<section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
restartOnExternalChanges="false" requirePermission="false" />
其中,restartOnExternalChanges设置为false,是告诉运行时,以后我修改WebConfig的appSettings不要重启程序了。
jon.valett@gmail.com -
你好,程序一定要编译后才生效,不编译的话,程序集还是原来的不会生效。
<section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
restartOnExternalChanges="false" requirePermission="false" />
其中,restartOnExternalChanges设置为false,是告诉运行时,以后我修改WebConfig的appSettings不要重启程序了。
jon.valett@gmail.com
真是感谢您的热心回复。我也越来越觉得,“生效”是编译后的产品或成果。
“”其中,restartOnExternalChanges设置为false,是告诉运行时,以后我修改WebConfig的appSettings不要重启程序了。
那它修改后的内容还是“生效”了,真是让人费解
-
避免更改应用程序的 \bin 目录中的程序集
更改bin目录的dll都会导致应用重启。对于正在在线的繁忙的web站点来说,每个更新都导致web访问突然变得很慢。因为许多缓存
要重新加载。同时若使用的是session,也会使所有session失效。因此将不需要一次更改的dll分开部署会更好。
.NET可以通过应用程序配置文件指定运行时要匹配的路径,在web.config的configuration节添加如下配置即可:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin\subbin1;bin\subbin2"/>
</assemblyBinding>
</runtime> -
App_Code 文件夹,是 ASP.NET 使用的一个特殊目录,但它与 \bin 目录又有所不同:\bin 目录用于存储由应用程序使用的预编译程序集,而 \Code 目录用于存储要在运行时进行动态编译的类文件。这使您可以将业务逻辑组件、数据访问组件以及其他组件的类存储在应用程序中的某个位置,并从任意页面使用这些类。因为这些类是在运行时动态编译的,而且会被包含 \Code 目录的应用程序自动引用,所以在部署项目之前不需要生成项目,也不需要明确添加类引用。您可以放心地对组件进行更改,然后使用简单的 XCOPY 或拖放操作进行部署。除了简化组件的部署和引用外,\Code 目录还极大地简化了本地化过程中使用的资源文件 (.resx) 的创建和访问过程,以及为 WSDL 文件 (.wsdl) 自动生成和编译代理类的过程
-
我这个问题,是源于在看李建忠老师的《设计模式》视频教程,他在教程中提到在配置文件中写一些设定以达到解耦的目地,但我认为如果在Web.config文件中这么作,如果修改它时会引起程序重启,这样Session及缓存会失去{对于一个加载了许多缓存的程序,可是影响不小}:例
1< appSettings >
2< add key ="factoryName" value ="EventFactory" ></ add >
3</ appSettings >
4此时客户端代码如下:
1/**/ /// <summary>
2/// App类
3/// </summary>
4public class App
5{
6public static void Main( string [] args)
7{
8string strfactoryName = ConfigurationSettings.AppSettings[ " factoryName " ];
9
10LogFactory factory;
11factory = (LogFactory)Assembly.Load( " FactoryMethod " ).CreateInstance( " FactoryMethod. " + strfactoryName);
12
13Log log = factory.Create();
14log.Write();
15}
16}
像以上的情况,如果修改了Web.config中的文件,会导致程序重启,那么Session,缓存都会失去。
所以我才有了以上的疑问 -
上面已经讲得很详细了,如果楼主还不明白,建议系统学习asp.net的基础知识。
http://hi.baidu.com/2009ajun