代码改变世界

容易引起重启的一些理解

2009-08-15 22:38  宝宝合凤凰  阅读(431)  评论(0)    收藏  举报
1。修改Web.config会引起Web程序重新编译,这个编译是自动的,ASP.NET Runtime将随时监视Web.config,一旦web.config有了改动,ASP.NET将重新编译程序!同理,App_Code文件夹里面的类也有这样的现象
2。还有一个是全局global.asax这个文件的更新也会导致重启
3。还有一个就是bin目录的更新也会导致文件的重启

=======================
避免更改应用程序的 \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>

App_Code 文件夹,是 ASP.NET 使用的一个特殊目录,但它与 \bin 目录又有所不同:\bin 目录用于存储由应用程序使用的预编译程序集,而 \Code 目录用于存储要在运行时进行动态编译的类文件。这使您可以将业务逻辑组件、数据访问组件以及其他组件的类存储在应用程序中的某个位置,并从任意页面使用这些类。因为这些类是在运行时动态编译的,而且会被包含 \Code 目录的应用程序自动引用,所以在部署项目之前不需要生成项目,也不需要明确添加类引用。您可以放心地对组件进行更改,然后使用简单的 XCOPY 或拖放操作进行部署。除了简化组件的部署和引用外,\Code 目录还极大地简化了本地化过程中使用的资源文件 (.resx) 的创建和访问过程,以及为 WSDL 文件 (.wsdl) 自动生成和编译代理类的过程
</runtime>


private static string history = string.Empty;
        history += (history == string.Empty ? "" : "&nbsp;|&nbsp;") + DateTime.Now.ToString();
        Label1.Text = history;

-------------------------------------------------
在网上看到,“在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会引发重启。


1、重启服务,指的是从“控制面板”--->"管理工具"--->“服务”--->“3w服务”
2、重启应用程序是指asp.net会在修改web.config后重新编译webapplication或website。

--------------
为了避免修改源代码,有许多人写在Web.cofing中,如:Factory Method模式,但要注意这样会引起重启