更新——复制问题的过程:
1) 在c:\projects\restart-demo创建一个网站项目
2) 添加默认 web.config 和一个虚拟 aspx 页面test.aspx
3) 映射 IIS 指向根文件夹c:\projects\restart-demo
4) 使用 perfmon 监控应用程序重启、健康监控、跟踪 global.asax Application_End 等。
5)浏览器中的请求页面http://localhost/test.aspx
应用程序启动
6) 创建新文件夹c:\projects\restart-demo\asdf
申请结束
7) 浏览器中的请求页面http://localhost/test.aspx
应用程序启动
8) 将文件夹c:\projects\restart-demo\asdf重命名 为 c:\projects\restart-demo\asdf1
申请结束
结束更新
我们正在使用后端 CMS 在 ASP.NET 站点中生成文件和文件夹。
用户能够创建/修改/删除文件并将它们推送到网络场。
我们注意到的一个问题:
当用户创建、重命名或删除文件夹时,会导致 App Domain 重新启动。结果,会话、缓存等都丢失了。
请注意,它也不需要是像 /bin 或 /App_Code 这样的特殊文件夹。
有什么办法可以防止这种行为?
它确实阻碍了性能,原因有两个:
- 应用域重启时缓存被转储
- 重启后需要重新建app域