As Maurico https://stackoverflow.com/users/21239/mauricio-scheffer and codeka https://stackoverflow.com/users/241462/codeka首先声明,不要使用默认值进程内会话 http://msdn.microsoft.com/en-us/library/ms178586(v=VS.80).aspx如果您不希望您的会话受到网站重新编译和应用程序回收的影响。
导致整个网站重新编译的原因列表:
默认情况下,当对顶级文件在网站中,整个网站都会重新编译。顶级文件包括全局.asax文件以及中的所有文件bin/ and 应用程序代码/文件夹。
修改网络配置 http://msdn.microsoft.com/en-us/library/aa719558(VS.71).aspx
-
配置包含文件更改,如果SectionInformation.RestartOnExternalChanges 属性 http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.restartonexternalchanges.aspx is true
外部更改时重新启动="true”
要求权限=“假”/>
Notes:
- 如果您希望能够更改顶级文件而不导致整个站点重新编译,您可以设置优化编译属性 http://msdn.microsoft.com/en-us/library/system.web.configuration.compilationsection.optimizecompilations.aspx将 Web.config 文件中的编译元素设置为 true
参考:
- 了解 ASP.NET 动态编译 http://msdn.microsoft.com/en-us/library/ms366723.aspx
告诉网站项目(不是 Web 应用程序项目)重新编译自身的更改和文件类型的信息在哪里?
我问这个问题的原因是我们不希望用户丢失会话。因此,我们只想在凌晨时分使用可重新编译的更改来更新实时网站,但更愿意在白天进行更改以加快速度。我们确实首先升级到临时服务器并在那里观看,但提前提供一个明确的列表会更好。
不仅当您的网站重新编译时,而且当 IIS 工作进程被回收时,您都会丢失会话。从技术上讲,这是可能发生的随时(有一些方法可以最大限度地减少它,但我更喜欢构建能够在工作进程回收中幸存的应用程序),因此如果会话很重要,那么您确实需要将它们存储在进程外。
ASP.NET 带有一个内置的“状态服务器”,它只是一个存储会话状态的 Windows 服务。另一种选择是使用 SQL Server 会话状态存储。
很多人会告诉你,在 SQL Server 中存储会话状态是一个性能问题,但我不同意:由于进程回收而丢失会话比 SQL Server 的性能更值得关注。此外,如果您真正需要的话,ASP.NET 状态服务器会更快(如果您想在电源周期后继续运行,您甚至可以编写一个自定义提供程序,将状态存储在 NoSQL 数据库中!)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)