ASP.NET网站项目何时重新编译?

时间:2010-04-12 21:06:14

标签: asp.net web-site-project recompile

正如Mauricocodeka所述,如果您不希望您的会话受到网站重新编译和应用程序回收的影响,请不要使用默认的InProc sessions

导致整个网站重新编译的原因列表:

  1. 默认情况下,如果对网站中的顶级文件进行任何更改,则会重新编译整个网站。顶级文件包含 global.asax 文件以及 bin / App_Code / 文件夹中的所有文件。

  2. 修改web.config

  3. 配置包括文件更改,如果SectionInformation.RestartOnExternalChanges property为真

    <节     NAME = “MyAppSettings”     type =“System.Configuration.AppSettingsSection,System.Configuration,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”     的 restartOnExternalChanges = “的”     requirePermission =“false”/>

  4. 注意:

    • 如果您希望能够在不导致重新编译整个站点的情况下更改顶级文件,则可以将Web.config文件中编译元素的optimizeCompilations attribute设置为true

    参考文献:


    哪些信息告诉导致网站项目(而不是Web应用程序项目)的更改和文件重新编译?

    我问的原因是因为我们不希望用户丢失会话。因此,我们希望仅在凌晨时分更新实时网站并进行可重新编译的更改,但我们希望在白天进行更改以加快它们的速度。我们首先会向升级服务器进行升级并在那里进行观察,但是确定的列表会提前很好。

1 个答案:

答案 0 :(得分:6)

您不仅会在重新编译网站时丢失会话,而且还会在IIS工作进程被回收时丢失会话。从技术上讲,这可以随时发生(有办法将其最小化,但我更喜欢构建能够在工作流程中循环使用的应用程序),所以如果会话很重要那么你真的需要做到将它们存储在进程外。

ASP.NET附带一个内置的“状态服务器”,它只是一个存储会话状态的Windows服务。另一种选择是使用SQL Server会话状态存储。

很多人会告诉你,在SQL Server中存储会话状态是一个性能问题,但我不同意:由于进程回收而丢失会话比SQL Server的性能更令人担忧。除了你真正需要的东西之外,ASP.NET状态服务器更快(如果你想在电源循环中存活,你甚至可以编写一个在NoSQL数据库中存储状态的自定义提供程序!)